randn函数加噪声_损失函数 (Loss Function)
計算值:
真實值:
pytorch很多的loss 函數都有size_average和reduce兩個布爾類型的參數,需要解釋一下。因為一般損失函數都是直接計算 batch 的數據,因此返回的 loss 結果都是維度為(batch_size, ) 的向量。
- 如果 reduce = False,那么 size_average 參數失效,直接返回向量形式的 loss;
- 如果 reduce = True,那么 loss 返回的是標量
- 如果 size_average = True,返回 loss.mean();
- 如果 size_average = True,返回 loss.sum();
若把這兩個參數設置成 False,這樣子比較好理解原始的損失函數定義。
1、MSELoss(均方誤差損失函數)
def prac_MSE_loss():loss_fn = torch.nn.MSELoss(reduce=False, size_average=False)input = torch.autograd.Variable(torch.randn(3, 4))target = torch.autograd.Variable(torch.randn(3, 4))loss = loss_fn(input, target)print(input);print(target);print(loss)print(input.size(), target.size(), loss.size()) prac_MSE_loss()2、BCELoss(二分類用的交叉熵損失函數)
用的時候需要在該層前面加上Sigmoid函數
因為只有正例和反例,且兩者的概率和為 1,那么只需要預測一個概率就好了,可以簡化成:
loss_fn = torch.nn.BCELoss(reduce=False, size_average=False) input = Variable(torch.randn(3, 4)) target = Variable(torch.FloatTensor(3, 4).random_(2)) loss = loss_fn(F.sigmoid(input), target) print(input); print(target); print(loss)BCEWithLogitsLoss:
上面的 nn.BCELoss 需要手動加上一個 Sigmoid 層,這里是結合了兩者,不需要加sigmoid層,就能得到BCELoss一樣的結果。
loss_fn = torch.nn.BCELoss(reduce=False, size_average=False) input = Variable(torch.randn(3, 4)) target = Variable(torch.FloatTensor(3, 4).random_(2)) loss = loss_fn(input, target) print(input); print(target); print(loss)3、CrossEntropyLoss(交叉熵損失函數)
def prac_cross():# weight = torch.Tensor([1, 2, 1, 1, 10])loss_fn = torch.nn.CrossEntropyLoss(reduce=False, size_average=False)input = Variable(torch.randn(3, 5)) # (batch_size, C)target = Variable(torch.LongTensor(3).random_(5))loss = loss_fn(input, target)print(input)print(target)print(loss)print('---手算第一個---')import mathexp = math.esigma_exp_x = pow(exp, input[0][0]) + pow(exp, input[0][1]) + pow(exp, input[0][2]) + pow(exp, input[0][3]) + pow(exp, input[0][4])log_sigma_exp_x = math.log(sigma_exp_x)loss_1 = -input[0][2] + log_sigma_exp_xprint('第一個樣本的loss:', loss_1)假設共有三個類別cat、dog、bird,那么一張cat的圖片標簽應該為
。并且訓練過程中,這張cat的圖片經過網絡后得到三個類別網絡的輸出分別為3、1、-3。那么經過softmax可以得到對應的概率值,如下圖:4、Hinge Loss(折頁損失函數)
參考:
https://blog.csdn.net/shanglianlm/article/details/85019768
https://blog.csdn.net/zhangjunp3/article/details/80467350
PyTorch中的Loss Fucntion
https://blog.csdn.net/zhangxb35/article/details/72464152?utm_source=itdadao&utm_medium=referral
總結
以上是生活随笔為你收集整理的randn函数加噪声_损失函数 (Loss Function)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python控制鼠标点击标准模块_Pyt
- 下一篇: ul li前面的点怎么变大_亚马逊产品被