当前位置: 首页 > news >正文

深度学习神经网络全连接笔记day1

创建全连接神经网络

创建一个最基本的全连接神经网络(也称为多层感知机,MLP)通常需要以下步骤和方法:

  1. 定义网络结构

  • 输入层:确定输入数据的维度。例如,对于一个简单的图像分类任务,输入层的维度可能是图像的像素数量。

  • 隐藏层:定义一个或多个隐藏层,每个隐藏层包含一定数量的神经元。隐藏层的数量和每个隐藏层的神经元数量可以根据任务需求调整。

  • 输出层:根据任务目标确定输出层的神经元数量。例如,对于一个二分类问题,输出层通常有一个神经元;对于多分类问题,输出层的神经元数量等于类别数。

  1. 选择激活函数

  • 隐藏层激活函数:常用的激活函数有ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。ReLU是最常用的激活函数,因为它可以有效缓解梯度消失问题。

  • 输出层激活函数:根据任务类型选择合适的激活函数。例如,对于二分类任务,输出层通常使用Sigmoid函数;对于多分类任务,输出层使用Softmax函数。

  1. 初始化权重和偏置

  • 权重初始化:权重的初始化方法对网络的训练效果有重要影响。常见的初始化方法包括随机初始化(如Xavier初始化或He初始化)和零初始化(通常不推荐,因为会导致梯度消失)。

  • 偏置初始化:偏置通常初始化为0或小的常数。

  1. 定义损失函数

  • 二分类任务:通常使用二元交叉熵损失函数(Binary Cross-Entropy Loss)。

  • 多分类任务:通常使用多类交叉熵损失函数(Categorical Cross-Entropy Loss)。

  • 回归任务:通常使用均方误差损失函数(Mean Squared Error, MSE)。

  1. 选择优化器

  • SGD(随机梯度下降):最简单的优化器,通过计算梯度来更新权重。

  • Adam:一种自适应学习率的优化器,结合了RMSprop和Momentum的优点,通常在训练深度神经网络时表现良好。

  • 其他优化器:如RMSprop、Adagrad等。

  1. 前向传播

  • 在前向传播过程中,输入数据通过每一层的线性变换(权重乘法和偏置加法)和非线性激活函数,最终得到输出结果。

  1. 计算损失

  • 使用定义的损失函数计算模型的输出与真实标签之间的差异。

  1. 反向传播

  • 通过计算损失函数对每个权重和偏置的梯度,利用链式法则反向传播这些梯度,更新网络的权重和偏置。

  1. 训练模型

  • 迭代地执行前向传播、计算损失和反向传播,直到模型的性能不再提升或达到预定的训练轮数。

示例:创建一个全连接神经网络,主要步骤包括:

  1. 定义模型结构。

  2. 初始化模型、损失函数和优化器。

  3. 准备数据。

  4. 训练模型。

  5. (可选)评估模型。

你可以根据实际任务调整网络结构、损失函数和优化器等。

import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as Ftorch.manual_seed(1)# 定义全连接神经网络类
# nn.Module神经网络父类
class Net(nn.Module):def __init__(self, input_size):# super,调用父类的构造函数,保证基类正确初始化super(Net, self).__init__()# 定义线性层1self.fc1 = nn.Linear(input_size, 10)# 初始化权重,何凯明均匀初始化,加快计算速度,适用于relu,有效环节梯度消失或爆炸问题nn.init.kaiming_uniform_(self.fc1.weight)# 初始化偏置nn.init.zeros_(self.fc1.bias)# 初始化线性层2self.fc2 = nn.Linear(10, 4)nn.init.kaiming_uniform_(self.fc2.weight)nn.init.zeros_(self.fc2.bias)# 初始化线性层3self.fc3 = nn.Linear(4, 1)# xavier 适用于sigmoid,tanh等激活函数nn.init.xavier_uniform_(self.fc3.weight)nn.init.zeros_(self.fc3.bias)# 定义类方法,前向传播def forward(self, x):x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))# 二分类sigmoid激活函数x = F.sigmoid(self.fc3(x))return x# 初始化模型
input_size = 10
# 基于父类的功能,放入参数,自动执行前向传播的方法,计算前向传播的最终值
model = Net(input_size)
print(model)
# 定义损失函数,BCELoss二元交叉熵损失,适用于二分类,概率在0-1之间,sigmoid正好在0-1之间
criterion = nn.BCELoss()
# 优化器,自适应矩估计
optimizer = optim.Adam(model.parameters(), lr=0.01)# 训练模型def train(epochs):# 打开训练模式model.train()# 数据准备x = torch.randn(100, input_size)y = torch.randint(0, 2, (100, 1)).float()for epoch in range(epochs):# 前向传播预测值y_pred = model(x)# 计算损失loss = criterion(y_pred, y)# 梯度清零optimizer.zero_grad()# 反向传播计算梯度loss.backward()# 更新梯度optimizer.step()# 打印训练效果print(f'Epoch: {epoch}, Loss: {loss.item():.4f}')# 测试模型def test():# 打开测试模式model.eval()x = torch.randn(100, input_size)y = torch.randint(0, 2, (100, 1)).float()# 预测值with torch.no_grad():y_pred = model(x)# 将二分类大于0.5,变为1类,float()把false变为0.0,把true变为1.0y_pred = (y_pred > 0.5).float()score = (y_pred == y).float().mean().item()print(f'Score: {score:.4f}')if __name__ == '__main__':epochs = 10train(epochs)test()# 测试结果可能0.5左右是正常的因为所有的是随机的也就是0.5左右

激活函数的作用是在隐藏层引入非线性,使得神经网络能够学习和表示复杂的函数关系,使网络具备非线性能力,增强其表达能力。

激活函数通过引入非线性来增强神经网络的表达能力,对于解决线性模型的局限性至关重要。由于反向传播算法(BP)用于更新网络参数,因此激活函数必须是可微的,也就是说能够求导的。

相关文章:

  • 深入浅出目标检测:从入门到YOLOv3,揭开计算机视觉的“火眼金睛”
  • 如何评价2025 mathorcup妈妈杯数学建模竞赛?完整建模过程+完整代码论文全解全析来了
  • Spring Boot自动配置原理深度解析:从条件注解到spring.factories
  • 代码随想录算法训练营第二十一天
  • 工作总结(十二)——迁移svn单项目到gitlab上,保留历史提交记录
  • 使用 Docker 安装 Elastic Stack 并重置本地密码
  • STM32CubeMX-H7-15-SPI通信协议读写W25Q64
  • 第11篇:Linux程序访问控制FPGA端HEX<四>
  • C++23 新特性:行拼接前去除空白符 (P2223R2)
  • 相比其他缓存/内存数据库(如 Memcached, Ehcache 等),Redis 在微服务环境中的优势和劣势是什么?
  • 浪涌保护器:纳秒盾支持2/4/8线制,全面防护信号、电源及网络设备 智能防雷设备
  • 力扣每日打卡 2364. 统计坏数对的数目 (中等)
  • 【java 13天进阶Day06】Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法
  • 硬盘变废为宝!西部数据携微软等启动稀土回收 效率可达90%
  • 学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、GlitchPass渲染通道)
  • 自动驾驶与机器人算法学习
  • 数据结构--并查集-高效处理连通性问题
  • 细节:如何制作高质量的VR全景图
  • Yocto项目实战教程 · 第4章:4.2小节-菜谱
  • 「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式
  • 外交部回应美财长涉中国发展经济模式言论:损害各国人民共同利益的是美方
  • A股三大股指涨跌互现,工农中三大行股价创新高
  • 展讯:漫游者秦龙和巫鸿的三本书
  • 习近平在气候和公正转型领导人峰会上的致辞(全文)
  • 冒充县领导亲戚十年骗取38箱香菇木耳,河南一男子被判拘役
  • 新闻1+1丨居民水电气计量收费乱象,如何治?