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

前馈神经网络(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.mzph.cn/diannao/37093.shtml

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

相关文章

基于改进天鹰优化算法(IAO)优化支持向量机(SVM)数据分类预测(IAO-SVM)

改进天鹰优化算法(IAO)见:【智能优化算法】改进的AO算法(IAO)-CSDN博客 支持向量机(SVM)数据分类预测:基于支持向量机(SVM)的数据分类预测-CSDN博客 代码原理 基于改进天鹰优化算法(IAO)优化支持向量机(SVM&#xf…

uniapp获取证书秘钥、Android App备案获取公钥、签名MD5值

一、 uniapp获取证书秘钥 打开uniapp开发者中心下载证书打开cmd输入以下这段代码,下载提供查看到的密钥证书密码就可以了!下载证书在 java 环境下运行才可以 // your_alias 换成 证书详情中的别名,your_keystore.keystore 改成自己的证书文件…

Splashtop 的屏幕录制功能如何提高 IT 合规性

在当今的数字时代,随着远程办公的普及以及监管要求和网络安全威胁的加剧,IT 副总裁、首席信息官(CIO)等 IT 管理人员面临着一系列独特挑战。 各组织在远程支持运营中要全力维护合规性、提高安全性并坚持问责制,技术解…

汉江师范学院2024年成人高等继续教育招生简章

汉江师范学院,这所承载着深厚文化底蕴和学术积淀的高等学府,即将在2024年迎来新一季的成人高等继续教育招生。这不仅是一次知识的盛宴,更是对每一位怀揣梦想、追求进步的成年人的诚挚邀请。 汉江师范学院,以其严谨的教学态度、卓…

关于数据库的ACID几点

首先的话就是关于ACID,最重要的就是原子性了,这是基础。 原子性是指事务包含的所有操作,要么全部完成,要么全部不完成。如果不能保证原子性,可能会出现以下问题: 数据不一致:事务中的部分操作…

AI基础:从线性回归到梯度下降

一个简单的问题: 如果此时你正站在迷路缭绕的山坡上,能见度不高,但是你又想去往最低的山谷的位置,怎么走? 很简单,哪里陡那就往那里走呗——而这就是梯度下降算法的思想。 古话说:“先发制于人…

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

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

行业推荐!IG5216量产工具下载,IG5216开卡软件分享

国内固态硬盘常用,且有量产工具流传出来的主控厂商包括慧荣、群联、点序、英韧、得一微、瑞昱、联芸、迈威、国科、华澜微等等。 每个主控需要用各自对应的量产工具,不同的量产工具支持的闪存颗粒也有差异,因此要根据固态硬盘实际的主控型号…

气膜建筑审批流程及现状分析—轻空间

气膜建筑作为一种新兴的建筑形式,以其快速建造、成本低廉和灵活多变的优势在各个领域得到了广泛应用。然而,气膜建筑在我国尚未被纳入正式的建筑规范,这使得其审批流程与传统建筑有显著差异。轻空间将详细探讨气膜建筑的审批流程及其在实际操…

MongoDB:JSON and BSON

目录 什么是 JSON MongoDB-JSON连接 什么是 BSON MongoDB 使用 BSON 还是 JSON JSON 与 BSON 架构灵活性和数据治理 JSON 和 BSON 是近亲,正如它们几乎相同的名称所暗示的那样JSON(即 JavaScript 对象表示法)是网络上广泛流行的数据交换…

Transformer 结构

目录 一、Transformer 的整体结构二、Input Encoding三、Transformer Block3.1 Encoder3.1.1 Attention3.1.2 Self-attention3.1.3 Multi-head Attention 3.2 Decoder3.2.1 Masked Multi-head Attention 四、Transformer 的优缺点 遇到看不明白的地方,欢迎在评论中留…

Leetcode 矩阵问题

36题.有效的数独 此类问题特点是给出行列的多种限定条件,数独限制每行每列每个小九宫格元素范围为1-9且不可重复 。解决此类问题最简单的想法就是使用哈希set,记录每行,每列,每个小九宫格已经出现的元素。在遍历矩阵时提前做出是否…

S32K3 --- Wdg(内狗) Mcal配置

前言 看门狗的作用是用来检测程序是否跑飞,进入死循环。我们需要不停地喂狗,来确保程序是正常运行的,一旦停止喂狗,意味着程序跑飞,超时后就会reset复位程序。 一、Wdg 1.1 WdgGeneral Wdg Disable Allowed : 启用此参数后,允许在运行的时候禁用看门狗 Wdg Enable User…

技术干货丨如何加速工业数字孪生应用落地?

什么是数字孪生? “孪生”概念最早可追溯至NASA的阿波罗项目,随着数字化技术的进步,“孪生”概念应用从物理孪生向数字孪生发展。即“数字孪生”是对资产、进程或系统的一种数字化表示,并通过信息交互、数据同步等方式实现物理实体…

Java校园跑腿小程序校园代买帮忙外卖源码社区外卖源码

🔥校园跑腿与外卖源码揭秘🔥 🚀 引言:为何需要校园跑腿与外卖源码? 在快节奏的校园生活里,学生们对于便捷、高效的服务需求日益增长。校园跑腿和外卖服务成为了解决这一需求的热门选择。然而,…

实时智能全托管-云器Lakehouse重新定义多维数据分析

导读 本文将分享云器Lakehouse如何重新定义实时多维分析,帮助客户实现实时、智能、全托管的数据平台。主要内容包括以下几大部分: 多维数据分析的发展趋势和场景解析 技术解析:新一代数平台Lakehouse如何支持实时分析需求 价值解析&#x…

嵌入式linux系统中面试过程经验分享

大家好,今天主要给分享一下,如何在面试中介绍自己的项目经验,希望对大家有所帮助。 在面试时,经过寒暄后,一般面试官会让介绍项目经验。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚…

vscode在windows系统上进行C/C++环境配置

随手笔记前言 vscode在windows系统上进行C/C环境配置 步骤如下 第一步 下载安装VSCode 这应该是最简单的一步,相信大家自己就可以完成。如果在vscode官网感觉下载特别慢的话,可以去试一下腾讯软件中心,我都是在这个网页上下载的。下载好之…

26、 MySQL数据库基础练习系列股票交易系统基础查询和复杂查询

5、基础查询 -- 1、查询用户信息仅显示姓名与手机号 SELECT username as 姓名,phone as 手机号 from users;-- 2、模糊查询和explain语句 alter table stocks add index stock_name_index(stock_name); explain SELECT * from stocks where stock_name like %东吴证券%; -- 3、…

【AIGC X UML 落地】从UML语句到UML图形的生成,来看Agent插件的制作

上篇我们讲到如何通过多智能体实现自然语言绘制UML图。 没有看过的,可以去看下原文:《【AIGC X UML 落地】通过多智能体实现自然语言绘制UML图》 其中有一个实现重点,就是如何将 PlantUML 语句生成 UML 图片。在这里笔者是通过自定义 Agent 插件来实现这一流程。 本文,就此…