购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-5 损失函数

损失函数(Loss Functions)又称为目标函数(Objective Function)、成本函数(Cost Function),算法以损失最小化为目标,估算模型所有的参数,即权重与偏差,例如回归的损失函数为均方误差(MSE),我们也可以定义不同的损失函数,产生各种各样的应用,例如后续会讨论的风格转换(Style Transfer)、生成对抗网络(GAN)等。

PyTorch支持许多损失函数,可参阅官网关于损失函数的介绍 [9]

范例.列举常用的损失函数并进行测试。

下列程序代码请参考【04_13_损失函数.ipynb】。

(1)均方误差(MSE):通常用于预测连续型的变量(y)。语法如下:torch.nn.MSELoss(reduction='mean'),若reduction='sum',得到误差平方和(SSE)。

执行结果:tensor(1.8842, grad_fn=<MseLossBackward0>)。

损失的参数应为预测值与目标值,上述的程序只是测试,将input直接代入。

(2)绝对误差(MAE):使用torch.nn.L1Loss。

(3)CrossEntropyLoss:交叉熵(Cross Entropy),通常用于预测离散型的变量( y )。语法如下:

torch.nn.CrossEntropyLoss(weight=None, reduction='mean',

label_smoothing=0.0)

weight:每一类别占的权重,若为None,每一类别的权重均等。

reduction:与MSELoss相同,多一种选项None,表示不作加总或平均。

label_smoothing:计算后的损失函数是否平滑化,可设范围为[0, 1],0表不平滑化,1表完全平滑化。

执行结果:tensor(2.4065, grad_fn=<NllLossBackward0>)。

注意, TensorFlow使用交叉熵时,目标值( y )要先进行One-hot encoding转换,将单一变量变成 n 个变量, n y 的类别数,例如辨识0~9, n =10。或者采用SparseCategoricalCrossentropy, y 即可不转换,但PyTorch很贴心,可接受原本的 y 或经One-hot encoding的 y ,两者均可。

PyTorch还有很多损失函数,可用于语音、自然语言处理上,后续如有使用,再详细介绍。 E47tOKS6ZKwxtBOxcG3qwvVSxc1fO7FxlMenhak8NHHNFN1bSz6kcfhXnw8PXg32

点击中间区域
呼出菜单
上一章
目录
下一章
×