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

实用指南:第三十三天打卡复习

torch 库

 1. 张量操作
torch 库提供了张量(Tensor)数据结构,类似于 NumPy 的多维数组,但张量可以在 GPU 上运行以加速计算。

 2. 自动求导
torch.autograd 模块实现了自动求导功能,这对于训练神经网络至关重要。通过设置 requires_grad=True ,PyTorch 会跟踪所有涉及该张量的操作,并在调用 backward() 方法时自动计算梯度。

 3. 神经网络模块
torch.nn 模块提供了构建神经网络所需的各种组件,如层、损失函数等。可以通过继承 torch.nn.Module 类来定义自定义的神经网络。

4. 优化器
torch.optim 模块提供了各种优化算法,如随机梯度下降(SGD)、Adam 等,用于更新神经网络的参数。

 5. GPU 加速
torch.cuda 模块允许将张量和模型移动到 GPU 上进行计算,从而加速训练过程。可以使用 torch.cuda.is_available() 检查 GPU 是否可用。

全连接神经网络(Fully Connected Neural Network)

也被称为多层感知机(Multilayer Perceptron, MLP),是一种基本的神经网络结构。

1. 输入层(Input Layer)

输入层是神经网络的第一层,负责接收原始数据。输入层的神经元数量通常取决于输入数据的特征数量。例如,若输入数据是一个包含 784 个像素值的手写数字图像(28x28 像素),那么输入层就会有 784 个神经元,每个神经元对应一个像素值。输入层并不对数据进行任何计算,只是简单地将数据传递给下一层。

 2. 隐藏层(Hidden Layer)


隐藏层位于输入层和输出层之间,可以有一层或多层。隐藏层的神经元通过权重和偏置对输入数据进行非线性变换,从而学习数据中的复杂模式和特征。每一层的神经元都与上一层的所有神经元相连接,这就是“全连接”的含义。隐藏层的神经元数量和层数是超参数,需要根据具体问题进行调整。更多的隐藏层和神经元通常能学习到更复杂的模式,但也可能导致过拟合。

 3. 输出层(Output Layer)


输出层是神经网络的最后一层,负责输出最终的预测结果。输出层的神经元数量取决于具体的任务。例如,在二分类问题中,输出层通常只有一个神经元,输出一个介于 0 和 1 之间的概率值;在多分类问题中,输出层的神经元数量等于类别数,每个神经元输出对应类别的概率。

 4. 前向传播顺序

前向传播(Forward Propagation)是神经网络的核心计算过程,指输入数据从输入层逐层传递到输出层的过程。以下是详细步骤和计算顺序(以全连接网络为例):


1. 输入层 → 第一个隐藏层
  • 输入数据X(形状:[batch_size, input_dim]

  • 权重矩阵(形状:[input_dim, hidden_units]

  • 偏置向量(形状:[hidden_units]

  • 计算过程

    Z¹ = X · W¹ + b¹  # 线性变换
    A¹ = σ(Z¹)        # 激活函数(如ReLU/Sigmoid)
    • :加权和(未激活值)

    • :激活后的输出(作为下一层输入)


2. 隐藏层 → 隐藏层(多层时)
  • 第 k 层计算(k ≥ 2):

    Zᵏ = Aᵏ⁻¹ · Wᵏ + bᵏ  # 前一层输出作为输入
    Aᵏ = σ(Zᵏ)
  • 关键点

    • 每层的输入是前一层的激活输出 Aᵏ⁻¹

    • 权重矩阵 Wᵏ 形状为 [prev_units, current_units]


3. 最后一个隐藏层 → 输出层
  • 输入Aᴸ⁻¹(最后隐藏层输出)

  • 输出层权重Wᴸ(形状:[last_hidden_units, output_dim]

  • 计算

    Zᴸ = Aᴸ⁻¹ · Wᴸ + bᴸ
    Ŷ = g(Zᴸ)  # 输出层激活函数
    • 分类任务g 通常用 Softmax(多分类)或 Sigmoid(二分类)

    • 回归任务g 可以是恒等函数(无激活)

5.神经网络

在训练过程中监控模型在测试集(或验证集)上的性能。这样做有两个关键目的:

  1. 检测过拟合:当训练损失下降但测试损失上升时,表明模型开始记忆训练数据而非学习泛化模式

  2. 确定最佳停止点:通过测试集表现选择最佳模型,避免欠拟合或过拟合

6.参数

1.num_epochs

num_epochs = 20000  # 训练的轮数
  • 作用:定义模型将完整遍历整个训练数据集的次数

  • 典型值

    • 简单任务:100-500

    • 中等任务:500-2000

    • 复杂任务:2000-10000(本例20000偏大,可能是复杂任务或调试目的)

  • 注意事项

    • 过小:模型欠拟合

    • 过大:可能导致过拟合且浪费计算资源

    • 通常配合早停机制使用

2. model.forward(X_train) 与 model(X_train)

outputs = model.forward(X_train)   # 显式调用
# outputs = model(X_train)         # 隐式调用
  • 作用:执行前向传播计算

  • 关键区别

    • forward():直接调用前向传播方法

    • model():通过PyTorch的__call__魔术方法隐式调用forward()推荐使用

  • 参数

    • X_train:训练数据张量,形状通常为[batch_size, features]

3. criterion  损失函数

loss = criterion(outputs, y_train)
  • 作用:计算模型预测值与真实标签之间的差异(损失函数)

  • 常见选择

    • 分类任务:nn.CrossEntropyLoss()(多分类),nn.BCELoss()(二分类)

    • 回归任务:nn.MSELoss()(均方误差)

    • 自定义损失:可继承nn.Module实现

  • 参数

    • outputs:模型预测值

    • y_train:真实标签

4. optimizer

optimizer.zero_grad()  # 梯度清零
loss.backward()        # 反向传播
optimizer.step()       # 参数更新
  • 优化器三件套

    • zero_grad():清零梯度缓存(防止梯度累积)

    • backward():自动计算梯度(反向传播)

    • step():根据梯度更新权重参数

  • 常见优化器类型

    # 创建示例optimizer = torch.optim.SGD(model.parameters(), lr=0.01)optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

    关键参数

  • 优化器学习率(lr)动量(momentum)适用场景
    SGD0.01-0.10.9-0.99基础优化
    Adam0.0001-0.001β1=0.9, β2=0.999默认首选
    RMSprop0.001-RNN/LSTM

5. loss.item()

losses.append(loss.item())
  • 作用:loss 一般是一个包含单个元素的张量(Tensor), item() 是张量对象的一个方法,其作用是将仅含一个元素的张量转换为 Python 的标量(如 float 类型)。因此, loss.item() 就是把存储损失值的张量转换为 Python 标量值,方便后续打印、记录或者进一步处理。

  • 必要性

    • PyTorch张量包含梯度信息,.item()剥离计算图

    • 减少内存占用(避免保存完整计算图)

    • 便于Python数值操作(绘图、打印等)

6. 日志打印控制

if (epoch + 1) % 100 == 0:    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
  • 关键参数

    • 100:日志打印间隔(平衡信息量与输出量)

    • :.4f:格式化损失值显示4位小数

  • 设计考量

    • 大模型/大数据集:增大间隔(如500-1000)

    • 调试阶段:减小间隔(如10-50)

7. 隐藏的重要参数

学习率 (Learning Rate)
  • 作用:控制参数更新步长的超参数

  • 影响

    • 过大:震荡/发散

    • 过小:收敛缓慢

  • 设置方法

    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)  # 关键参数
批量大小 (Batch Size)
  • 作用:每次迭代使用的样本数

  • 影响

    • 大batch:训练稳定,内存要求高

    • 小batch:噪声大,正则化效果强

  • 典型位置

    # 在DataLoader中设置train_loader = DataLoader(dataset, batch_size=64)

    @浙大疏锦行

http://www.sczhlp.com/news/170031/

相关文章:

  • 淄博网站客户dede可以做购物网站吗
  • 厦门网站制作网页网站自然排名优化
  • wix建设网站教程内江规划建设教育培训中心网站
  • 博客网站快速排名广西建设网官网在线服务
  • 做网站类的书本信息辽宁工程造价信息网官网
  • jsp.ajax网站开发典型实例外贸网站建设设计
  • 贵州省住房和城乡建设官方网站网站建设与管理电子教程
  • 做路线图的网站宝安区在深圳排第几
  • 郑州网站开发hndlwx临沂市建设局网站改版
  • 东莞社保官方网站青岛做网站那家好
  • 站长工具集推广搜索引擎
  • 用jsp做一网站的流程宁波企业建站系统
  • wordpress getcategorylinkseo站内站怎么做
  • 58同城类似的网站怎么做那些网站是专门做一些调研的
  • 企业网站管理系统设计与实现小程序开发入门教程
  • 怎么在自己电脑上搭建网站室内设计联盟邀请码怎么获得
  • 汝州市文明建设网站淘宝客网站建设的策略
  • 祥云平台网站建设怎么收费网页版qq登录方法
  • 个人网站开发需求分析淘宝返利网站怎么做
  • 手机网站建设要注意哪些问题静态网站特点
  • 中牟网站建设推广app用什么平台比较好
  • 鄢陵网站建设电脑建站做一名网络写手去那个网站好
  • 透明网站模板民和县wap网站建设公司
  • 实用指南:Hardening fixes lead to hard questions
  • 赛前训练6 状压
  • 排序综合
  • 骨科医院网站优化服务商c2c模式分类
  • 广州建站网站视频拍摄软件
  • 网站建设项目登记表wordpress是国外服务器吗
  • 有没学做早餐的网站手机版wordpress