深度學習-損失函數

均方誤差

均值平方差(Mean Squared Error,MSE),也稱“均方誤差”,在神經網絡中主要是表達預測值與真實值之間的差異,對每一個真實值與預測值相減的平方取平均值

損失函數:

loss=1ni=1n(y^iyi)2 loss = \frac{1}{n} \sum_{i=1}^n(\hat{y}_i - y_i)^2

交叉熵

交叉熵(Cross Entropy)也是 loss 算法的一種,一般用在分類問題上,表達的意思爲預測輸入樣本屬於某一類的概率

損失函數: y 代表真實值分類(0或1),a代表預測值

loss=1nx[ylna+(1y)ln(1a)] loss = -\frac{1}{n} \sum_x [y \ln a+(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 ]
"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章