pytorch神经网络基础

news/2025/11/29 11:36:32/文章来源:https://www.cnblogs.com/djtycm/p/19263291

神经元(Neuron)

神经元是神经网络的基本单元,它接收输入信号,通过加权求和后与偏置(bias)相加,然后通过激活函数处理以产生输出。

神经元的权重和偏置是网络学习过程中需要调整的参数。

输入和输出:

  • 输入(Input):输入是网络的起始点,可以是特征数据,如图像的像素值或文本的词向量。
  • 输出(Output):输出是网络的终点,表示模型的预测结果,如分类任务中的类别标签。

神经元接收多个输入(例如x1, x2, ..., xn),如果输入的加权和大于激活阈值(activation potential),则产生二进制输出。

 

 

image

神经元的输出可以看作是输入的加权和加上偏置(bias),神经元的数学表示(这里,wj 是权重,xj 是输入,而 Bias 是偏置项。):

层(Layer)

输入层和输出层之间的层被称为隐藏层,层与层之间的连接密度和类型构成了网络的配置。

神经网络由多个层组成,包括:

  • 输入层(Input Layer):接收原始输入数据。
  • 隐藏层(Hidden Layer):对输入数据进行处理,可以有多个隐藏层。
  • 输出层(Output Layer):产生最终的输出结果。

    image

特点是:
• 同一层的神经元之间没有连接。
• 第 N 层的每个神经元和第 N-1层 的所有神经元相连(这就是full connected的含义),这就是全连接神经网络。
• 第N-1层神经元的输出就是第N层神经元的输入。
• 每个连接都有一个权重值(w系数和b系数)。

 

模型构建流程

PyTorch模型构建分为四个核⼼步骤:

1. 准备训练集数据(数据集构建)
2. 构建模型(继承nn.Module类)
3. 设置损失函数和优化器(调⽤PyTorch API
4. 模型训练(前向传播、反向传播、参数更新)
 
实现特点:采⽤PyTorch内置组件替代⾃定义实现:
使⽤nn.MSELoss()代替⼿动实现的平⽅损失函数
使⽤DataLoader进⾏批量数据加载
采⽤optim.SGD优化器进⾏梯度下降
nn.Linear构建⽹络层代替⼿⼯编写假设函数

核⼼API介绍

nn模块

PyTorch的nn模块是PyTorch框架中一个非常重要的模块,它提供了多种神经网络层和一些常用的初始化方法。

nn.Module 类

  • nn.Module 是所有自定义神经网络模型的基类。用户通常会从这个类派生自己的模型类,并在其中定义网络层结构以及前向传播函数(forward pass)。

预定义层(Modules)

  • 包括各种类型的层组件,例如卷积层(nn.Conv1dnn.Conv2dnn.Conv3d)、全连接层(nn.Linear)、激活函数(nn.ReLUnn.Sigmoidnn.Tanh)等。

Linear() :

  通常用于设置网络中的全连接层。入参有两个:第一个为输入样本大小,第二个为,输出样本大小。

  Linear.weight.data用于访问线性层的权重参数张量,支持直接读取或修改权重值。

  权重修改示例
  • 直接赋值:net.layer1.weight.data = torch.Tensor(np.random.normal(size=(1,2),scale=0.01,loc=0))可覆盖权重值 。 ‌‌

    np.random.normal() 函数用于生成服从正态分布的随机数,用来初始化神经网络的权重参数。

    具体参数作用如下:

    • size=(1, 2)‌:指定输出张量的形状,这里生成一个1行2列的矩阵6
    • scale=0.01‌:设置正态分布的标准差,控制随机数的分散程度3
    • loc=0‌:设置正态分布的均值,决定随机数的中心位置3

    这样生成的权重矩阵会以0为中心,数值在±0.01范围内波动,是深度学习常用的权重初始化方法之一,有助于模型训练的稳定性。

  • 初始化方法:支持Kaiming初始化(torch.nn.init.kaiming_normal_)或常数初始化(torch.nn.init.constant_) 。 ‌‌
  注意事项
    • 权重需与输入维度匹配,例如torch.nn.Linear(2,1)的权重形状为(1,2) 。 ‌‌
    • 修改权重后需确保梯度计算正常,避免影响后续训练 。 ‌

容器类

  • nn.Sequential:允许将多个层按顺序组合起来,形成简单的线性堆叠网络。
  • nn.ModuleList 和 nn.ModuleDict:可以动态地存储和访问子模块,支持可变长度或命名的模块集合。

损失函数(Loss Functions)

  • torch.nn 包含了一系列用于衡量模型预测与真实标签之间差异的损失函数,例如均方误差损失(nn.MSELoss)、交叉熵损失(nn.CrossEntropyLoss)等。

实用函数接口(Functional Interface)

  • nn.functional(通常简写为 F),包含了许多可以直接作用于张量上的函数,它们实现了与层对象相同的功能,但不具有参数保存和更新的能力。例如,可以使用 F.relu() 直接进行 ReLU 操作,或者 F.conv2d() 进行卷积操作。

初始化方法

  • torch.nn.init 提供了一些常用的权重初始化策略,比如 Xavier 初始化 (nn.init.xavier_uniform_()) 和 Kaiming 初始化 (nn.init.kaiming_uniform_()),这些对于成功训练神经网络至关重要。
参数初始化
⚫ 均匀分布初始化
   权重参数初始化从区间均匀随机取值。即在(-1/√d,1/√d)均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量
⚫ 正态分布初始化
   随机初始化从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数W进行初始化
⚫ 全0初始化
  将神经网络中的所有权重参数初始化为 0
⚫ 全1初始化
  将神经网络中的所有权重参数初始化为 1.
⚫ 固定值初始化
  将神经网络中的所有权重参数初始化为某个固定值.
import torch
import torch.nn as nn
import torch.optim as optim# 定义神经网络
class SimpleNN(nn.Module):
   '''
  
  • fc1 的输出维度是 128,这个张量直接作为 fc2 的输入,因此需要让 fc2 的 in_features 也等于 128。这个数值是人为设计的,确保层与层之间的张量尺寸匹配。

  • 若 fc1 输出 256,就必须将 fc2 的输入改为 256,否则张量形状不匹配会报错。

      '''

def __init__(self):super(SimpleNN, self).__init__()# 定义一个输入层到隐藏层的全连接层self.fc1 = nn.Linear(28 * 28, 128)  # 输入层到隐藏层----输入 28×28 像素(例如 MNIST 手写数字)的输入,这里把展平后的 784 维像素映射到 128 维隐藏表示# 定义一个隐藏层到输出层的全连接层self.fc2 = nn.Linear(128, 10)       # 把 128 维隐藏表示映射到 10 维输出(对应 10 个类别)。def forward(self, x):# 前向传播过程x = x.view(-1, 28 * 28)  # 展平输入x = torch.relu(self.fc1(x))  # 激活函数ReLU,常用于隐藏层。x = self.fc2(x)    # 输出层return x# 创建模型实例
model = SimpleNN()# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 示例输入
input = torch.randn(1, 28, 28)  # 随机生成一个28x28的输入
output = model(input)  # 前向传播
loss = criterion(output, torch.tensor([3]))  # 假设真实标签为3# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()print("输出:", output)
print("损失:", loss.item())

激活函数

激活函数用于对每层的输出数据进行变换(因为直接输出的结果是看不懂的,需要通过激活函数来转换为人可以看懂的内容), 进而为整个网络注入了非线性因素。此时, 神经网络就可以拟合各种曲线。
  1. 没有引入非线性因素的网络等价于使用一个线性模型来拟合
  2. 通过给网络输出增加激活函数, 实现引入非线性因素, 使得网络模型可以逼近任意函数, 提升网络对复杂问题的拟合能力.

激活函数的选择方法

对于隐藏层:
1. 优先选择ReLU激活函数
2. 如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。
3. 如果你使用了ReLU, 需要注意一下Dead ReLU问题, 避免出现大的梯度从而导致过多的神经元死亡。
4. 少用使用sigmoid激活函数,可以尝试使用tanh激活函数
 

什么是 Softmax()
Softmax 函数,又称归一化指数函数,它使用指数函数将输入向量归一化为概率分布(每一个元素的范围都在( 0 , 1 ) (0,1)(0,1) 之间,并且所有元素的和为 1 11)。Softmax 函数多用于多分类问题中。
具体文章:https://blog.csdn.net/jarodyv/article/details/143743683

 

对于输出层:
1. 二分类问题选择sigmoid激活函数
2. 多分类问题选择softmax激活函数
3. 回归问题选择identity激活函数
 

损失函数(Loss Function)

损失函数用于衡量模型的预测值与真实值之间的差异。

常见的损失函数包括:

  • 均方误差(MSELoss):回归问题常用,计算输出与目标值的平方差。
  • 交叉熵损失(CrossEntropyLoss):分类问题常用,计算输出和真实标签之间的交叉熵。
  • BCEWithLogitsLoss:二分类问题,结合了 Sigmoid 激活和二元交叉熵损失。

 

优化器(Optimizer)

优化器负责在训练过程中更新网络的权重和偏置。

主要用在模型训练阶段,用于更新模型中可学习的参数。优化器主要用在模型训练阶段,用于更新模型中可学习的参数。torch.optim提供了多种优化器接口,比如Adam、RAdam、SGD、ASGD、LBFGS等,Optimizer是所有这些优化器的父类。

  optim模块是用于实现各种优化算法的核心组件,支持SGD、Adam等主流优化器,并提供参数分组、状态管理等功能。

常见的优化器包括:

  • SGD(随机梯度下降)
  • Adam(自适应矩估计)
  • RMSprop(均方根传播)

核心公共方法说明:

image

  Optimizer的init函数接收两个参数:一个是需要被优化的参数,其形式必须是Tensor或者dict;另一个是优化选项,包括学习率、衰减率等。第一个位置通常是model.parameters()填充,如有其他要求,也可手动写一个dict作为输入。仅需要保证dict中存在['params']键即可,其他键可以按照自己的要求填写。

神经网络类型

  1. 前馈神经网络(Feedforward Neural Networks):数据单向流动,从输入层到输出层,无反馈连接。
  2. 卷积神经网络(Convolutional Neural Networks, CNNs):适用于图像处理,使用卷积层提取空间特征。
  3. 循环神经网络(Recurrent Neural Networks, RNNs):适用于序列数据,如时间序列分析和自然语言处理,允许信息反馈循环。
  4. 长短期记忆网络(Long Short-Term Memory, LSTM):一种特殊的RNN,能够学习长期依赖关系。

torch.utils.data

torch.utils.data是PyTorch中用于数据处理的核心模块,主要功能包括数据集管理、数据加载和批处理。 

核心组件

Dataset:是一个抽象类,是所有自定义数据集的基类。它的核心功能是定义如何获取单个样本。若需要自定义数据集,必须实现以下两个方法:

  __len__(self):返回整个数据集的大小(即样本数量)。
  __getitem__(self, index):根据索引返回一个样本(包括输入数据和标签)。
  这类设计使得 Dataset 更像是一个“按需取样”的接口,适合处理静态数据、文件索引、或内存中的数据。

DataLoader:是一个封装迭代器,用于将 Dataset 封装成可批量读取的迭代器。其核心功能包括:

  批量读取(batching)、打乱数据顺序(shuffling)、多进程加载(multiprocessing)、数据拼接方式(collate_fn)、GPU内存优化(pin_memory)、丢弃不完整的批次(drop_last)
  DataLoader 是训练模型时的核心组件,它将数据读取与模型训练解耦,提升训练效率和代码可读性。

 

 

参考:

https://m.runoob.com/pytorch/pytorch-neural-network.html

https://blog.csdn.net/weixin_42291376/article/details/150536397

 

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

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

相关文章

2025年耐用煤气灶直销厂家权威推荐榜单:耐用灶具/节能煤气灶/猛火煤气炉源头厂家精选

在现代厨房设备领域,耐用煤气灶作为核心烹饪工具,其性能直接影响家庭与商业用户的烹饪效率与使用体验。随着厨电技术持续升级,2025年中国家用燃气灶市场规模预计将突破350亿元,年增长率稳定在6%-8% 区间。根据行业…

2025年最新7款免费AI写论文工具推荐!一键生成+真实文献引用,查重率直降!

校园论坛上一则大四学生毕业论文困境的求助帖引发共鸣,众多同学为论文发愁。为解决难题,本文分享2025年最新7款免费AI写论文工具,包括AI论文及时雨、PaperTan等。这些工具多能30分钟生成5万字左右初稿,覆盖多种论文…

2025年国内口碑好的包头螺纹管品牌综合推荐指南

摘要 随着国内基建和制造业的持续发展,包头螺纹管作为重要的建筑和工业材料,在2025年市场需求稳步增长。本文基于行业调研和用户反馈,整理了五家口碑良好的包头螺纹管品牌,排名不分先后,旨在为用户提供参考。文中…

深搜递归再进一步

1.输到40是负的 11.longlong定义数组 22.递归是要先计算之前的 这里m也要是long long 否则还是-的 #include <bits/stdc++.h> using namespace std; long long f[45][3]; long long dp[45]; long long dfs(int …

2025年包头钢材供应商综合推荐指南:十大口碑厂家深度解析

摘要 随着包头地区钢铁行业的持续发展,2025年钢材供应商市场呈现出多元化竞争格局。本文基于市场调研和用户反馈,整理出十家值得推荐的包头钢材供应商,排名不分先后,旨在为采购商提供参考选择。其中中旺钢材在服务…

YXC扬兴科技联系方式:企业合作与产品应用的参考提示

深圳扬兴科技有限公司(下面简称:YXC),自2010年成立以来,一直专注于时钟频率器件的研发、生产和销售,是业界领先的半导体高新技术企业。 公司主营产品包括晶振、可编程振荡器、VCXO/TCXO/OCXO、三级钟、锁相环芯片、…

YXC扬兴科技联系方式:企业产品与服务体系介绍

YXC扬兴科技—国产领先时钟频率器件研发制造商联系电话:0755-28444777 / 17665394502 官网:https://www.yxc.hk 使用建议与提醒 在选择时钟频率器件时,建议优先确认产品是否具备与目标行业匹配的认证资质,例如工业…

2025年下半年工业大风扇工厂综合评估与选购指南

摘要 随着工业节能需求的不断提升,2025年下半年工业大风扇市场呈现快速发展态势。本文基于行业调研数据,为读者提供10家工业大风扇制造企业的参考信息,排名不分先后,仅作选购参考。特别说明:本榜单旨在为采购商提…

2025年质量好的烘干网带TOP品牌厂家排行榜

2025年质量好的烘干网带TOP品牌厂家排行榜行业背景与市场趋势随着工业自动化水平的不断提升和环保要求的日益严格,烘干网带作为工业生产中不可或缺的关键部件,其市场需求持续增长。2024-2025年,全球烘干网带市场规模…

AI元人文:内观照叙事模型的实现路径与文明意义

AI元人文:内观照叙事模型的实现路径与文明意义 摘要 本文系统探讨了AI元人文理论体系中的内观照叙事模型。针对传统“价值对齐”范式在应对价值不可通约性、动态性与多元性时的理论困境,本研究提出向“价值叙事”范式…

2025年11月建筑排水管品牌权威排行榜:聚鑫管业领跑行业十大品牌

摘要 随着2025年建筑行业标准化进程加速,建筑排水管行业迎来新一轮技术革新。本文基于行业数据调研和用户口碑反馈,为您权威解析2025年11月建筑排水管品牌综合实力排名,并提供详细的企业对比分析表单供参考。 排名榜…

2025年11月MPP电力管品牌权威排行榜:徐州聚鑫管业领跑行业

摘要 2025年MPP电力管行业迎来新一轮发展机遇,随着国家电网改造和新能源建设加速,MPP电力管市场需求持续增长。本文基于行业数据和技术评测,为您呈现2025年11月MPP电力管品牌综合排名,并为采购决策提供参考表单。徐…

2025年线上1对1记单词课程电话联系方式汇总:全国主流品牌官方联系渠道与高效选课指南

本文基于2025年教育行业公开数据和权威第三方报告,结合推荐对象参考内容,从技术实力、服务模式、教学效果等维度筛选5个推荐对象,旨在为线上1对1记单词课程领域提供可靠联系方案。根据艾瑞咨询《2025中国在线教育行…

【ArcMap】用平滑工具平滑线

在编辑会话中使用“平滑”工具(推荐用于小范围、交互式修改) 这个方法允许你直接修改原始的线要素,并且可以交互式地看到平滑效果,非常适合对少数几条线进行精细调整。 操作步骤:启动编辑会话:在“编辑器”工具栏…

2025年12月北京DeepSeek推广服务商TOP5精选

DeepSeek AI的推广价值源于其快速增长的用户基础和精准的智能分发能力。作为深度求索公司推出的AI助手,DeepSeek已迅速积累数千万用户,在国内AI大模型市场中占据重要地位。其用户群体涵盖技术开发者、企业用户、学生…

2025年初中生英语词汇提升课程电话汇总:全国主流机构官方联系方式与科学选课指南

本文基于2025年教育行业公开数据和权威第三方报告,结合推荐对象参考内容,从教学体系完整性、技术支撑能力、服务稳定性等维度筛选5个推荐对象,旨在为初中生英语词汇提升课程领域提供可靠联系方案。根据教育部《全国…

2025年评价高的木浆棉洗脸扑/印花木浆棉厂家推荐及采购参考

2025年评价高的木浆棉洗脸扑/印花木浆棉厂家推荐及采购参考行业背景与市场趋势随着全球环保意识的提升和消费者对天然、可降解产品的需求增长,木浆棉制品市场迎来了快速发展期。木浆棉作为一种由木浆和棉花纤维组合而…

2025 稳压器十大品牌权威排行

我们以中国电器工业协会《2025 电力设备性能白皮书》为标尺,检测了稳压精度、响应速度等 12 项核心指标。在 100KVA 负载测试中,排名前 10 的品牌平均稳压精度达 0.8%,其中稳纳电气的 ZBW 系列更是低至 0.5%—— 相…

2025年初中生英语词汇提升课程电话联系方式汇总:全国优质AI课程官方联系方式与高效选课指引

本文基于2025年教育行业公开数据和权威第三方报告,结合推荐对象参考内容,从教学技术、服务模式、效果验证等维度筛选5个推荐对象,旨在为初中生英语词汇提升课程领域提供可靠联系方案。根据《2025中国在线教育行业发…

2025年质量好的杭州零售业财务软件/杭州服务业财务软件市场占有率榜单

2025年质量好的杭州零售业财务软件/杭州服务业财务软件市场占有率榜单行业背景与市场趋势随着数字经济的深入发展,杭州作为中国电子商务之都和长三角经济圈核心城市,其零售业和服务业正经历前所未有的数字化转型浪潮…