Pytorch框架学习笔记

官网- PyTorch

Tensor

构造随机初始化矩阵

x=torch.rand(5,3)

构造全0矩阵,数据类型为long

x=torch.zeros(5,3,dtype=torch.long)

获取维度信息

x.size()

tensor加法

torch.add(x,y)== x+y ==y.add_(x)

改变tensor的大小和形状

获取value

x.item(

自动微分

  1. tensor的属性.requires_grad设置为true的话,则会跟踪所有的操作,计算完成后可以调用.backward自动计算所有的梯度;
  2. grad_fn 是 PyTorch 中的一个属性,用于跟踪张量的计算历史,特别是在反向传播(backpropagation)过程中。每个张量都可以有一个 grad_fn 属性,指示了创建该张量的操作,以及如何计算该张量的梯度。

神经网络

  1. 可以通过torch.nn进行创建;
  2. 一个nn.module包括了层和一个forward(input)方法,同时会返回一个output输出;
  3. 一个典型的神经网络训练包含

1:定义一个包含可训练参数的神经网络;

2:迭代整个输入;

3:通过网络对输入数据进行处理

4:计算与真实结果的损失;

5:反向传播梯度到神经网络的参数;

6:更新网络的参数,常用的::weight = weight - learning_rate *gradient

  1. 池化操作通常在模型的前向传播(forward pass)中执行,而不是在模型的初始化(__init__)方法中执行的主要原因是,池化操作是一种对输入数据的特定处理,它需要输入数据的具体值来进行操作。池化操作是基于输入数据的内容来执行的,而不是基于模型参数的初始化;

损失函数

1)损失函数需要两个参数:模型输出目标,通过计算损失函数的值来评估输出距离目标有多远;

2)grad变量会累积梯度;

3)每次反向传播更新梯度我们都需要把原来的梯度清空;

4)SGD

5)criterion用于定义损失函数

图像分类器

1)optimizer.step()用于更新神经网络的模型参数,通常在模型的反向传播后被调用,用于执行参数的梯度下降步骤;

2)查看gpu个数torch.cuda.device_count()

3)数据并行自动拆分了你的数据并且将任务单发送到多个 GPU 上。当每一个模型都完成自己的任务

之后,DataParallel 收集并且合并这些结果,然后再返回给你

数据加载与处理

  1. torchvision.transforms.Compose可以组合一些处理操作;
  2. torch.utils.data.DataLoader是一个很好的迭代器;
  3. torchcision提供了大部分图像集和图像变换

4)如果这个 tensor x requires_grad=True ,那么反向传播之后 x.grad 将会是另一个张量,其为x关于某个标量值的梯

度。

迁移学习

  1. 越是底层的网络层他学习到的东西就越细节,越是细节,他的通用度就越高,因此我们可以重用这些细节的部分,进而产生了迁移学习,将底层学习到的参数固定住,只需要改变上几层的参数即可,因为上层的参数较为具体是不可能适配所有的任务的

2)要冻结除最后一层之外的所有网络。通过设置 requires_grad == Falsebackward() 来冻结参数,这样在反向传播backward()的时候他们的梯度就不会被计算

3)计算转发:在神经网络中向前传递输入数据以获得模型输出的过程;

seq2seq

保存和加载模型

1)torch.save :将序列化对象保存到磁盘。此函数使用Python的 pickle 模块进行序列化。使

用此函数可以保存如模型、tensor、字典等各种对象。

2)torch.load :使用pickle的 unpickling 功能将pickle对象文件反序列化到内存。此功能还可

以有助于设备加载数据

3)torch.nn.Module.load_state_dict :使用反序列化函数 state_dict 来加载模型的参数字典。

4)state_dict将每一层映射到其参数张量,只有可以学习参数的层(例如卷积,线性层)才有stste_dict这一项;

5)打印模型的额状态字典

# 打印模型的状态字典

print("Model's state_dict:")

for param_tensor in model.state_dict():

print(param_tensor, "\t", model.state_dict()[param_tensor].size())

导出为onnx模型

1)在 PyTorch 中通过跟踪工作导出模型。要导出模型,请调用 torch.onnx._export() 函数。这将执

行模型,记录运算符用于计算输出的轨迹。 因为 _export 运行模型,我们需要提供输入张量 x

这个张量的值并不重要; 它可以是图像或随机张量,只要它大小是正确的。

猜你喜欢

转载自blog.csdn.net/warren103098/article/details/135408216