torch.nn 包中常用的损失函数

1、torch.nn.MSELoss:均方误差

import torch
from torch.autograd import Variable
loss_f = torch.nn.MSELoss()  #不用传入任何参数

'''随机生成两个维度都是(100,100)的参数'''
x = Variable(torch.randn(100, 100))
y = Variable(torch.randn(100, 100))

loss = loss_f(x, y)  #在使用实例时需要输入两个维度一样的参数方可进行计算
print(loss.data)

>>> tensor(1.9685)

2、torch.nn.L1Loss:平均绝对误差

import torch
from torch.autograd import Variable
loss_f = torch.nn.L1Loss()  #不用传入任何参数

'''随机生成两个维度都是(100,100)的参数'''
x = Variable(torch.randn(100, 100))
y = Variable(torch.randn(100, 100))

loss = loss_f(x, y)  #在使用实例时需要输入两个维度一样的参数方可进行计算
print(loss.data)

>>> tensor(1.1232)

3、torch.nn.CrossEntropyLoss :计算交叉熵

import torch
from torch.autograd import Variable
loss_f = torch.nn.CrossEntropyLoss()  #不用传入任何参数

'''随机生成两个满足交叉熵的计算条件的参数'''
x = Variable(torch.randn(3, 5))  #随机参数,维度为(3,5)
y = Variable(torch.LongTensor(3).random_(5))  #是 3 个范围为 0~4 的随机数字

loss = loss_f(x, y)  #在使用实例时需要输入两个维度一样的参数方可进行计算
print(x, '\n', y, '\n', loss.data)
tensor([[-1.2902, -0.8470,  0.7237,  1.6615,  0.1341],
        [ 1.2521, -1.5131,  0.4501,  0.4782, -0.7082],
        [ 0.5782,  2.2565,  1.3255,  0.8077, -0.8508]]) 
 tensor([1, 0, 4]) 
 tensor(2.5134)