均方误差
均值平方差(Mean Squared Error,MSE),也称“均方误差”,在神经网络中主要是表达预测值与真实值之间的差异,对每一个真实值与预测值相减的平方取平均值损失函数:
l o s s = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 loss = \frac{1}{n} \sum_{i=1}^n(\hat{y}_i - y_i)^2 loss=n1i=1∑n(y^i−yi)2
交叉熵
交叉熵(Cross Entropy)也是 loss 算法的一种,一般用在分类问题上,表达的意思为预测输入样本属于某一类的概率损失函数: y 代表真实值分类(0或1),a代表预测值
l o s s = − 1 n ∑ x [ y ln a + ( 1 − y ) ln ( 1 − a ) ] loss = -\frac{1}{n} \sum_x [y \ln a+(1-y) \ln(1-a)] loss=−n1x∑[ylna+(1−y)ln(1−a)]
"""深度学习框架 pytorch 和 tensorflow 中的交叉熵函数"""
import torch
import torch.nn as nn
import tensorflow as tf
torch.manual_seed(2019)
logits = torch.randn(2, 3) # 网络输出
labels = torch.ones(2, dtype=torch.long).random_(3) # 真实标签
criterion = nn.CrossEntropyLoss(reduction='none')
loss1 = criterion(logits, labels)
print('loss1:', loss1)
loss2 = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits.numpy(), labels=labels.numpy())
with tf.Session() as sess:
print('loss2:', sess.run(loss2))
"""
loss1: tensor([0.6964, 2.4335])
loss2: [0.69642293 2.4335492 ]
"""