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都默认需要计算梯度。
- 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.biasself.linear = torch.nn.Linear(1, 1) # 构造对象Linear,并说明输入输出的维数,第三个参数默认为true,表示用到bdef forward(self, x):y_pred = self.linear(x)return y_pred
5.pytorch 之 call, init,forward
- init: 类的初始化函数,类似于c++的构造函数
- call_: 使得类对象具有类似函数的功能。
如果要使用一个可调用对象,那么在类的声明的时候要定义一个 call()函数就OK了
我们平时自定义的函数、内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都可称之为可调用对象,判断对象是否为可调用对象可以用函数 callable
6.tensor.grad.data.zero_() #手工清零,释放之前计算的梯度
7.python @符号的使用归纳整理一下
① 函数
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
把当前函数当做参数传入到修饰函数里执行,然后再修饰函数里做一些操作。
② @staticmethod 和 @classmethod
@staticmethod 相当于C++里的静态函数
@classmethod 相当于C++里常用的一个类调用Create来创建自身的用法。
应用场景可以参考这个链接
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优化器