pytorch学习日记(1)

学习参考:菜鸟教程

pytorch基础概念:张量(Tensor)、自动求导(Autograd)、神经网络模块(nn.Module)、优化器(optim)等。

张量(Tensor)

pytorch的核心数据结构,可视为多维数组,可以在GPU上并行运算,也可以运行在不同的设备上来加快计算速度。

  • 维度(Dimensionality):标量(0维),向量(1维),矩阵(2维)。
  • 形状(Shape):大小。
  • 数据类型(Dtype):包括整数型(如torch.int8、torch.int32)、浮点型(如torch.float32、torch.float64)和布尔型(torch.bool)。
    生成随机数的几个函数:
点击查看代码
# 生成形状为(3,4)的标准正态分布随机数
x = torch.randn(3, 4)
# 生成0到10之间的形状为(3,4)的随机整数
x = torch.randint(0, 10, (3, 4))
# 生成0到1之间均匀分布的浮点随机数
x = torch.rand(3, 4)  # 形状为(3,4),值在[0, 1)之间
# 生成0到n-1的随机排列
x = torch.randperm(10)  # 生成0-9的随机排列
# 根据概率生成0-1张量
probs = torch.tensor([0.3, 0.7])  # 概率张量
x = torch.bernoulli(probs)  # 根据概率生成0或1
# 自定义均值和标准差的正态分布
mean = torch.tensor([0.0, 1.0])
std = torch.tensor([1.0, 2.0])
x = torch.normal(mean, std)
# 泊松分布随机数生成
rates = torch.tensor([1.0, 2.0])
x = torch.poisson(rates)
# 生成指定范围内的均匀分布随机数
x = torch.distributions.Uniform(low=0, high=1).sample((3, 4))

自动求导(Autograd)

基于链式法则(吴恩达以及李宏毅课程中都有详细介绍)主要用于在训练神经网络时计算梯度以及进行反向传播算法的实现
使用动态图:计算图在运行时动态创建,每次执行操作时图都会更新。

点击查看代码
x = torch.randn(2,2, requires_grad=True)
print(x)
print(x.grad)
y=x+2
z=y*y*3
out=z.mean()
print(out)
out.backward()
print(x.grad)
#结果
# tensor([[-0.8082, -0.4631],
       [-1.0004,  0.1259]], requires_grad=True)
# None
# tensor(6.9758, grad_fn=<MeanBackward0>)
# tensor([[1.7878, 2.3054],
        [1.4994, 3.1888]])
可推出:$$ y' = \frac{3}{2}x + 3. $$

神经网络(nn.Module)

神经网络通过调整神经元之间的连接权重来优化预测结果,这一过程涉及前向传播、损失计算、反向传播和参数更新。
神经网络的类型包括前馈神经网络、卷积神经网络(CNN)、循环神经网络(RNN)和长短期记忆网络(LSTM)
训练过程:前向传播->计算损失->反向传播->参数更新->迭代

优化器(Optimizers)

优化器在训练过程中更新神经网络的参数,以减少损失函数的值。
PyTorch 提供了多种优化器,例如 SGD、Adam 等。

posted @ 2025-03-25 18:41  嘉德罗斯大人  阅读(28)  评论(0)    收藏  举报