[深度学习] 前馈神经网络

news2025/1/11 2:41:33

前馈神经网络(Feedforward Neural Network, FFNN)是人工神经网络中最基本的类型,也是许多复杂神经网络的基础。它包括一个输入层、一个或多个隐藏层和一个输出层。以下是详细介绍:

1. 结构

1. 输入层(Input Layer)
  • 包含与输入数据特征数相同的神经元。
  • 直接接收输入数据,每个神经元对应一个输入特征。
2. 隐藏层(Hidden Layers)
  • 包含一个或多个隐藏层,每层包含若干神经元。
  • 每个神经元与前一层的所有神经元相连接。
2.1. 全连接层(Dense Layer)

定义:每个神经元与前一层的所有神经元连接。

作用

  • 进行线性变换:在这里插入图片描述
    ,其中 W(l) 是权重矩阵, a(l−1) 是前一层的激活值, b(l)是偏置。
  • 通过激活函数进行非线性变换:在这里插入图片描述
    常见激活函数
  • ReLU(Rectified Linear Unit)
  • Sigmoid
  • Tanh

示例代码

tf.keras.layers.Dense(64, activation='relu')
2.2. 激活函数层(Activation Layer)

定义:非线性函数,应用于每个神经元的输出。

作用

  • 引入非线性,使网络能够学习复杂的模式。

常见激活函数

  • ReLU:在这里插入图片描述
  • Sigmoid:在这里插入图片描述
  • Tanh:在这里插入图片描述
    示例代码
tf.keras.layers.Activation('relu')
2.3. Dropout层

定义:在训练过程中随机丢弃一定比例的神经元。

作用

  • 防止过拟合,增强模型的泛化能力。

参数

  • rate:丢弃概率(0到1之间)。

示例代码

tf.keras.layers.Dropout(0.5)
2.4. 批量归一化层(Batch Normalization Layer)

定义:在每个批次中标准化激活值。

作用

  • 加速训练,稳定学习过程。
  • 防止过拟合,增强模型的鲁棒性。

示例代码

tf.keras.layers.BatchNormalization()
2.5. 高斯噪声层(Gaussian Noise Layer)

定义:在训练过程中向输入添加高斯噪声。

作用

  • 增强模型的鲁棒性,防止过拟合。

参数

  • stddev:噪声的标准差。

示例代码

tf.keras.layers.GaussianNoise(0.1)
2.6. 高斯丢弃层(Gaussian Dropout Layer)

定义:在训练过程中以高斯分布的比例随机丢弃神经元。

作用

  • 类似于Dropout层,但使用高斯分布的比例来丢弃神经元。

参数

  • rate:丢弃概率。

示例代码

tf.keras.layers.GaussianDropout(0.5)
3. 输出层(Output Layer)
  • 包含与输出要求相匹配的神经元数量。
  • 输出神经元的数量取决于具体的任务,如回归任务可能只有一个输出神经元,分类任务根据类别数设置相应的神经元数。
  • 使用适合任务的激活函数,如Sigmoid用于二分类,Softmax用于多分类,线性激活函数用于回归。

2. 工作原理

  1. 前向传播(Forward Propagation)

    • 输入数据通过网络层层传播,每层神经元计算加权和(加上偏置项),并通过激活函数进行非线性变换。
    • 公式:在这里插入图片描述
      ,其中z(l)是第l层的线性组合,W(l)是权重矩阵,a(l−1)是前一层的输出,b(l)是偏置项。
    • 激活函数:在这里插入图片描述
  2. 损失函数(Loss Function)

    • 定义模型预测值与真实值之间的差异。
    • 常用的损失函数包括均方误差(MSE)用于回归,交叉熵损失(Cross-Entropy Loss)用于分类。
    • 公式:对于二分类问题,交叉熵损失函数为 在这里插入图片描述
  3. 反向传播(Backward Propagation)

    • 通过梯度下降优化算法来更新权重和偏置,以最小化损失函数。
    • 计算损失函数相对于每个参数的梯度,并反向传播这些梯度,通过链式法则逐层更新权重和偏置。
    • 公式:权重更新 在这里插入图片描述
      ,偏置更新 在这里插入图片描述
      ,其中 η 是学习率。

3. 特点和应用

  • 特点

    • 前馈神经网络是有向无环网络(DAG),数据从输入层通过隐藏层一直流向输出层,不存在反馈循环。
    • 容易实现和理解,是深度学习模型的基础。
    • 通常通过增加隐藏层数量和神经元数量来提高模型的表达能力。
  • 应用

    • 适用于各种监督学习任务,包括回归、二分类和多分类任务。
    • 用于预测、分类、模式识别等领域。
    • 可以与其他技术结合,如卷积神经网络(CNN)和循环神经网络(RNN)等,用于处理图像、文本、时序数据等复杂任务。

示例代码

下面是一个更复杂的前馈神经网络示例代码,包含多种不同类型的隐藏层,包括密集层(Dense Layer)、批量归一化层(Batch Normalization)、Dropout层、和高斯噪声层(Gaussian Noise Layer)。

示例代码
import tensorflow as tf
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler

# 生成示例数据
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 构建模型
model = tf.keras.Sequential([
    tf.keras.layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],)),
    tf.keras.layers.BatchNormalization(),  # 批量归一化层
    tf.keras.layers.Dropout(0.5),  # Dropout层
    
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.GaussianNoise(0.1),  # 高斯噪声层
    tf.keras.layers.BatchNormalization(),
    
    tf.keras.layers.Dense(16, activation='relu'),
    tf.keras.layers.BatchNormalization(),
    
    tf.keras.layers.Dense(1, activation='sigmoid')  # 输出层,适用于二分类任务
])

# 编译模型
model.compile(optimizer='adam',
              loss='binary_crossentropy',  # 二分类交叉熵损失
              metrics=['accuracy'])

# 训练模型
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)

# 评估模型
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {test_accuracy}')

# 用于预测的新数据
new_data = np.random.rand(1, 20)  # 示例数据
new_data = scaler.transform(new_data)
prediction = model.predict(new_data)
print(f'Prediction: {prediction}')

代码解释

  1. 数据生成

    • 使用make_classification函数生成一个二分类的数据集,其中有1000个样本,每个样本有20个特征。
    • 将数据集分为训练集和测试集。
  2. 数据标准化
    使用StandardScaler对数据进行标准化处理,使每个特征的均值为0,方差为1。

  3. 模型构建

    • 第一层:全连接层(Dense)有128个神经元,激活函数为ReLU。

    • 第二层:批量归一化层(BatchNormalization),有助于加速训练和稳定性。

    • 第三层:Dropout层,丢弃率为0.5,防止过拟合。

    • 第四层:全连接层,有64个神经元,激活函数为ReLU。

    • 第五层:批量归一化层。

    • 第六层:Dropout层,丢弃率为0.5。

    • 第七层:全连接层,有32个神经元,激活函数为ReLU。

    • 第八层:高斯噪声层(GaussianNoise),添加标准差为0.1的高斯噪声,增加模型鲁棒性。

    • 第九层:批量归一化层。

    • 第十层:全连接层,有16个神经元,激活函数为ReLU。

    • 第十一层:批量归一化层。

    • 输出层:全连接层,有1个神经元,激活函数为Sigmoid,适用于二分类任务。

  4. 模型编译与训练

    • 使用Adam优化器,二分类交叉熵损失函数,准确率作为评估指标。
    • 训练模型,设置训练轮数为50,每批次训练样本数为32,20%的数据用于验证。
  5. 模型评估与预测

    • 评估测试集上的模型表现,打印测试准确率。
    • 对新数据进行预测,展示预测结果。

这个示例代码展示了如何在前馈神经网络中使用不同类型的隐藏层,以增强模型的表达能力和稳定性。可以根据需要进一步调整模型结构和参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1873505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在微信小程序中使用svg图标

在项目中引入图标组件是很常见的一个问题&#xff0c;但是这里我在小程序中引入图标组件的时候报错了&#xff01; 这个主要原因是 微信小程序上不支持 SVG 字体图标&#xff01; <image src"./xx.svg"/>所以参考微信开放社区 我们想要在微信小程序中使用svg图…

java基于ssm+jsp 电子商城系统

1管理员功能模块 管理员登录&#xff0c;通过填写用户名、密码进行登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入电子商城系统可以查看个人中心、用户管理、医生管理、药品信息管理、线上诊疗管理、医生信息管理、管理员管理、论坛管理、系统管理、订单管…

智慧数据中心可视化:高效管理与直观监控的未来

随着数据中心的规模和复杂性不断增加&#xff0c;传统管理方式难以满足需求。智慧数据中心通过图扑可视化实现实时数据监控和智能分析&#xff0c;将复杂的基础设施直观呈现&#xff0c;极大提升了运维效率、故障排查速度和资源优化能力&#xff0c;为企业提供现代化、智能化的…

卡尔曼滤波公式推导笔记

视频见B站上DR_CAN的卡尔曼滤波器 【卡尔曼滤波器】3_卡尔曼增益超详细数学推导 &#xff5e;全网最完整_哔哩哔哩_bilibili

4. node联调devtools

4. node联调devtools 把node代码放在开发者工具执行代码执行命令 node --inspect-brk js文件浏览器执行命令 chrome://inspect/#devices检测到文件之后会有个点击选项,点击进入就能调试自己的代码 有了开发者工具调试之后我们可以给自己的吐环境脚本在完善一下,当获取的参数是…

实力认可!安全狗受聘成为福建省网信系统2024年度网络安全技术支撑单位

6月6日&#xff0c;福建省委网信办组织召开福建省网信系统2024年度网络安全技术支撑单位座谈会。 作为国内云原生安全领导厂商&#xff0c;安全狗也受邀出席此次活动。 省委宣传部副部长、省委网信办主任、省互联网信息办公室主任张远出席会议并颁发支撑单位证书。安全狗凭借出…

Java面向对象特性

Java继承&#xff1a; 继承的概念&#xff1a; 在Java中&#xff0c;继承&#xff08;inheritance&#xff09;是面向对象编程的一个重要概念&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法。通过继承&#xff0c…

Java养老护理助浴陪诊小程序APP源码

&#x1f496;护理助浴陪诊小程序&#x1f496; 一、引言&#xff1a;养老新趋势&#x1f331; 在快节奏的现代生活中&#xff0c;养老问题逐渐成为了社会关注的焦点。如何为老年人提供便捷、贴心的服务&#xff0c;让他们晚年生活更加安心、舒适&#xff0c;是我们每个人都需…

BUUCTF--WEB

首頁 - OWASP Top 10:2021 [极客大挑战 2019]EasySQL 类型:sql注入 使用万能密码 flag{f580db5b-c0c9-4b13-bfb6-adfa525c93f5} [极客大挑战 2019]Havefun 类型:代码审计 F12打开浏览器控制台 GET请求,在url添加参数/?cat=dog访问 返回flag{f60c7d5c-9f44-4e92-88c0…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(6)----FIFO数据读取与配置

驱动LSM6DS3TR-C实现高效运动检测与数据采集.6--FIFO数据读取与配置 概述视频教学样品申请源码下载主要内容生成STM32CUBEMX串口配置IIC配置CS和SA0设置ICASHE修改堆栈串口重定向参考驱动程序FIFO参考程序初始化管脚获取ID复位操作设置量程BDU设置设置速率FIFO读取程序设置FIFO…

鸿蒙开发 之 健康App案例

1.项目介绍 该项目是记录用户日常饮食情况&#xff0c;以及针对不同食物摄入营养不同会有对应的营养摄入情况和日常运动消耗情况&#xff0c;用户可以自己添加食品以及对应的热量。 1.1登陆页 1.2饮食统计页 1.3 食物列表页 2.登陆页 2.1自定义弹框 import preferences from oh…

词向量模型

文章目录 RNN词向量模型模型整体框架训练数据构建CBOW与Skip-gram模型负采样 RNN 卷积神经网络&#xff08;CNN&#xff09;主要应用计算机视觉&#xff0c;而递归神经网络&#xff08;RNN&#xff09;主要应用于自然语言处理。 递归神经网络会涉及处理之前所有的数据&#x…

Linux高级编程——线程

pthread 线程 概念 &#xff1a;线程是轻量级进程&#xff0c;一般是一个进程中的多个任务。 进程是系统中最小的资源分配单位. 线程是系统中最小的执行单位。 优点&#xff1a; 比多进程节省资源&#xff0c;可以共享变量 进程会占用&am…

【漏洞复现】金和OA 未授权访问

【产品介绍】 金和OA协同办公管理系统C6软件&#xff08;简称金和OA&#xff09;&#xff0c;本着简单、适用、高效的原则&#xff0c;贴合企事业单位的实际需求&#xff0c;实行通用化、标准化、智能化、人性化的产品设计&#xff0c;充分体现企事业单位规范管理、提高办公效…

ubuntu22.04编译安装tesseract

1、 为什么用自己编译安装&#xff0c;而不采用apt安装&#xff1f; 由于tesseract有很多依赖包&#xff0c;直接用deb包或者rpm包等安装包安装很复杂&#xff0c;不一定能成功安装。 2、安装基本的依赖包 sudo apt update sudo apt install g autoconf automake libtool pkg…

如何利用ChatGPT寻找科研创新点?分享5个有效实践技巧

欢迎关注&#xff1a;智写AI&#xff0c;为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥交流&#xff1a;yida985 地表功能最强大的高级学术专业版已经开放&#xff0c;拥有全球领先的GPT学术科研应用&#xff0c;有兴趣…

44 mysql batch insert 的实现

前言 我们这里 来探讨一下 insert into $fields values ($values1), ($values2), ($values3); 的相关实现, 然后 大致来看一下 为什么 他能这么快 按照 我的思考, 应该里里面有 批量插入才对, 但是 调试结果 发现令我有一些意外 呵呵 果然 只有调试才是唯一的真理 相比于 …

如何用一个二维码实现企业固定资产管理?

固定资产管理中普遍存在盘点难、家底不清、账实不一致、权责不清晰等问题。如果平时不规范化执行&#xff0c;年终面对上上下下、大大小小、成百上千件物资要进行盘点整理的时候&#xff0c;会是十分痛苦且低效的事情。 今天这篇文章就来给大家推荐几家便宜好用的二维码固定资…

学校选用SOLIDWORKS教育版进行授课的理由

在当代的工程与技术教育领域&#xff0c;计算机辅助设计软件&#xff08;CAD&#xff09;已经变成了一个不可缺少的教学辅助工具。SOLIDWORKS作为一个功能齐全且用户友好的CAD软件&#xff0c;其教育版本在学校教学环境中受到了广泛的欢迎。本文将对学校教学中选用SOLIDWORKS版…

最实用的美国TikTok选品策略之跟卖亚马逊

美国电商市场&#xff0c;TikTok好比是一个快速成长的大龄儿童&#xff0c;亚马逊&#xff08;Amazon&#xff09;则是一个历经风雨的成熟中年人。TikTok现阶段还处于大量招商&#xff0c;引入优质品牌、卖家初期&#xff0c;许多品类并没有太多优质的商品售卖&#xff0c;竞争…