🚥神经网络与深度学习笔记_Day2
2026-1-21
| 2026-3-15
字数 1752阅读时长 5 分钟
type
Post
status
Published
date
Jan 21, 2026
slug
NN-DL-Learning2
summary
神经网络与深度学习笔记_Day2,包含 张量 与 自动微分
tags
Python
机器学习
PyTorch
category
机器学习
icon
password
@ZZHow(ZZHow1024)
参考课程:
黑马程序员AI大模型《神经网络与深度学习》全套视频课程,涵盖Pytorch深度学习框架、BP神经网络、CNN图像分类算法及RNN文本生成算法

01_今日内容大纲介绍

  • 张量运算
  • 张量运算函数
  • 张量索引操作
  • 张量形状操作
  • 张量拼接操作
  • 自动微分模块
  • PyTorch 构建回归横型

02_张量与NumPy之间相互转换

  • 张量转换为 NumPy 数组
    • 使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。
  • NumPy 数组转换沩张量
    • 使用 from_numpy 可以将 ndarray 数组转换为Tensor,默认共享内存,使用 copy 函数避免共享。
      • 使用 torch.tensor 可以将 ndarray 数组转换为 Tensor,默认不共享内存。
      • 标量张量和数字转换
        • 对于只有一个元素的张量,使用 item() 函数将该值从张量中提取出来。

      03_张量的基本运算

      • 加减乘除取负号
        • add、sub、mul、div、neg
        • add_、sub_、mul_、div_、neg_(其中带下划线的版本会修改原数据)

      04_张量点乘和矩阵乘法

      • 点乘运算
        • 点乘指 (Hadamard) 的是相同形状的张量对应位置的元素相乘,使用 mul 和运算符 * 实现。
        • 例如:
          • ,
            , 的 Hadamard 积:
      • 矩阵乘法运算
        • 矩阵乘法运算要求第一个矩阵 shape:,第二个矩阵 shape:,两个矩阵点积运算 shape 为:
            1. 运算符 @ 用于进行两个矩阵的乘积运算。
            1. torch.matmul 对进行乘积运算的两矩阵形状没有限定。对于输入的 shape 不同的张量,对应的最后几个维度必须符合矩阵运算规则。

      05_张量的常用运算函数

      • PyTorch 为每个张量封装很多实用的计算函数
        • 均值:mean()
        • 平方根:sqrt()
        • 求和:sum()
        • 指数计算:pow()
        • 对数计算:log()log2()log10()
        • 等等

      06_张量的索引操作

      • 索引操作
        • 我们在操作张量时,经常需要去获取某些元素就进行处理或者修改操作,在这里我们需要了解在 torch 中的索引操作。
        • 准备数据
          • 简单行列
            • 列表索引
              • 范围索引
                • 布尔索引
                  • 多维索引

                  09-12_张量的形状操作

                  • reshape() 在不改变张量内容的前提下,对其形状做改变
                  • unsqueeze() 在指定的轴上增加一个(1)维度,等价于:升维
                  • squeeze() 删除所有为 1 的维度,等价于:降维
                  • transpose() 一次只能交换 2 个维度
                  • permute() 一次可以同时交换多个维度
                  • view() 只能修改连续的张量的形状,连续张量=内存中存储顺序和在张量中显示的顺序相同
                  • contiguous() 把不连续的张量 -> 连续的张量,即:基于张量中显示的顺序,修改内存中的存储顺序
                  • is_contiguous() 判断张量是否是连续的

                  13_张量的拼接操作

                  • torch.cat() 函数可以将多个张量根据指定的维度拼接起来,不改变维度数
                  • torch.stack() 函数会在一个新的维度上连接一系列张量,这会增加一个新维度,并且所有输入张量的形状必须完全相同。

                  14_自动微分模块

                  • 训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名 torch.autograd 的微分模块。它支持任意计算图的自动梯度计算。
                    • 自动微分模块
                      自动微分模块

                  15_自动微分模块案例_更新一次参数

                  • 梯度基本计算
                    • PyTorch 不支持向量张量对向量张量的求导,只支持标量张量对向量张量的求导
                      • x 如果是张量,y 必须是标量(一个值)才可以进行求导
                    • 计算梯度:y.backvard(),y 是一个标量
                    • 获取 x 点的梯度值:x.grad,会累加上一次的梯度值

                  16_自动微分模块案例_循环更新参数

                  • 梯度下降法求最优解
                    • 梯度下降法公式:w = w - r * grad(r 是学习率,grad 是梯度值)
                    • 清空上一次的梯度值:x.grad.zero_()
                • Python
                • 机器学习
                • PyTorch
                • 神经网络与深度学习笔记_Day1神经网络与深度学习笔记_Day3
                  Loading...