Loss functions
基本用法:
criterion = LossCriterion() #构造函数有自己的参数
loss = criterion(x, y) #调用标准时也有参数
计算出来的结果已经对mini-batch取了平均。
class torch.nn.L1Loss(size_average=True)[source]
创建一个衡量输入x(模型预测输出)和目标y之间差的绝对值的平均值的标准。loss(x,y)=1/n∑|xi−yi|
x和y可以是任意形状,每个包含n个元素。- 对
n个元素对应的差值的绝对值求和,得出来的结果除以n。 - 如果在创建
L1Loss实例的时候在构造函数中传入size_average=False,那么求出来的绝对值的和将不会除以n
class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]
实现Adam算法。
它在Adam: A Method for Stochastic Optimization中被提出。
参数:
- params (iterable) – 待优化参数的iterable或者是定义了参数组的dict
- lr (
float, 可选) – 学习率(默认:1e-3) - betas (Tuple[
float,float], 可选) – 用于计算梯度以及梯度平方的运行平均值的系数(默认:0.9,0.999) - eps (
float, 可选) – 为了增加数值计算的稳定性而加到分母里的项(默认:1e-8) - weight_decay (
float, 可选) – 权重衰减(L2惩罚)(默认: 0)
state_dict()在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict作为python的字典对象将每一层的参数映射成tensor张量,
train(mode=True)
将module设置为 training mode。
仅仅当模型中有Dropout和BatchNorm是才会有影响。
zero_grad()
将module中的所有模型参数的梯度设置为0.
pytorch的.item()方法
python的.item()用于将字典中每对key和value组成一个元组,并把这些元组放在列表中返回
例如
person={‘name’:‘lizhong’,‘age’:‘26’,‘city’:‘BeiJing’,‘blog’:‘www.jb51.net’}
for key,value in person.items():
print ‘key=’,key,’,value=’,value
而pytorch中的.item()用于将一个零维张量转换成浮点数,比如loss = (y_pred - y).pow(2).sum()
print(loss.item())
训练完train样本后,生成的模型model要用来测试样本。在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有BN层和Dropout所带来的的性质。