PyTorch学习笔记

1.item() → number
方法: item() 返回一个数
只能用于只包含一个元素的张量。对于其他的张量,请查看方法tolist().
该操作是不可微分的,即不可求导.
(译者注:返回的结果是普通Python数据类型,
自然不能调用backward()方法来进行梯度的反向传播)

   Example:  例子:
   >>> x = torch.tensor([1.0])
   >>> x.item()
1.0

2.Tensor(张量)
中包含data和grad,data和grad也是Tensor。grad初始为None,调用l.backward()方法后w.grad为Tensor,故更新w.data时需使用w.grad.data。如果w需要计算梯度,那构建的计算图中,跟w相关的tensor都默认需要计算梯度。

  1. l.backward()
    会把计算图中所有需要梯度(grad)的地方都会求出来,然后把梯度都存在对应的待求的参数中,最终计算图被释放。取tensor中的data(tensor.item())是不会构建计算图的。

4.Module 类是 torch.nn 模块里提供的一个模型构造类 (nn.Module),是所有神经⽹网络模块的基类,我们可以继承它来定义我们想要的模型;
PyTorch模型定义应包括两个主要部分:各个部分的初始化(init);数据流向定义(forward)

class LinearModel(torch.nn.Module):
   def __init__(self):
       super(LinearModel, self).__init__() #构造函数
       # (1,1)是指输入x和输出y的特征维度,这里数据集中的x和y的特征都是1维的
       # 该线性层需要学习的参数是w和b  获取w/b的方式分别是~linear.weight/linear.bias
       self.linear = torch.nn.Linear(1, 1)  # 构造对象Linear,并说明输入输出的维数,第三个参数默认为true,表示用到b
   def forward(self, x):
       y_pred = self.linear(x)
       return y_pred

5.pytorch 之 call, init,forward

  • init: 类的初始化函数,类似于c++的构造函数
  • call_: 使得类对象具有类似函数的功能。
    如果要使用一个可调用对象,那么在类的声明的时候要定义一个 call()函数就OK了
    我们平时自定义的函数、内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都可称之为可调用对象,判断对象是否为可调用对象可以用函数 callable
    PyTorch学习笔记_第1张图片

6.tensor.grad.data.zero_() #手工清零,释放之前计算的梯度

7.python @符号的使用归纳整理一下
① 函数
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
把当前函数当做参数传入到修饰函数里执行,然后再修饰函数里做一些操作。
PyTorch学习笔记_第2张图片
② @staticmethod 和 @classmethod
@staticmethod 相当于C++里的静态函数
@classmethod 相当于C++里常用的一个类调用Create来创建自身的用法。
PyTorch学习笔记_第3张图片
应用场景可以参考这个链接
Python 中的 classmethod 和 staticmethod 有什么具体用途?
③ @property
看这个文章就是了,这个很好理解,就是属性,没啥特别的
链接: Zhihao:python @property的介绍与使用

8.tensor.nn
① tensor.nn.MSELOSS
在这里插入图片描述
创建一个标准,用于测量输入x和目标y中每个元素之间的均方误差(L2范数的平方)
如果设置reduction = ‘sum’,则可以避免除以n。

  • size_average:是否求均值,苛求可不求,效果一样。根据size_average对每个minibatch的观测值求平均值或求和。
  • reduce:是否要降维
  • reduction (string,可选)-指定应用于输出的缩减量:‘none’ | ‘mean’ | ‘sum’。
    ‘none’:不应用缩减,
    ‘mean’:输出的总和将除以输出中的元素数量,
    ‘sum’:输出将被求和。
    注意:size_average和reduce正在被弃用,同时,指定这两个参数中的任何一个都将覆盖reduction。默认值:“mean”。
  • 调用例子:
    criterion = torch.nn.MSELoss(reduction=‘sum’) # 损失函数,输出将被求和。
    loss = criterion(y_pred, y_data) # forward: loss ,y_pred:预测;y_data:真实数据

9.PyTorch Fashion(风格)
① prepare dataset
② design model using Class # 设计模型,目的是为了前向传播forward,即计算y hat(预测值)
③ Construct loss and optimizer (using PyTorch API) 构造损失和优化器,其中,计算loss是为了进行反向传播,optimizer是为了更新梯度。
④ Training cycle (forward,backward,update)

10.torch.optim优化器
PyTorch学习笔记_第4张图片
在这里插入图片描述

你可能感兴趣的:(pytorch,学习,笔记)