天天看點

PyTorch基礎:神經網絡工具箱torch.nn(損失函數)

在深度學習中,損失函數反應模型最後預測結果與實際真值之間的差異,可以用來分析訓練過程的好壞、模型是否收斂等,例如均方誤差、交叉熵損失等。在PyTorch中,損失函數可以看做是網絡的某一層而放到模型定義中,但在實際使用時更偏向于作為功能函數放到前向傳播過程中

PyTorch在torch.nn即torch.nn.functional中都提供了各種損失函數,通常來講,由于損失函數不含有可學習的參數,是以這兩者在功能上基本沒有差別

>>> #在perception.py終端環境繼續運作,來進一步求損失
>>> from torch import nn
>>> import torch.nn.functional as F
>>> output
tensor([[0.8806, 0.5558],
        [0.9010, 0.5695],
        [0.9133, 0.5829],
        [0.8642, 0.5535]], grad_fn=<SigmoidBackward>)
>>> #設定标簽,由于是二分類,一共有4個樣本,是以标簽次元為1*4,每個數為0或1兩個類别
>>> label = torch.Tensor([0,1,1,0]).long()
>>> #執行個體化nn中的交叉熵損失
>>> criterion = nn.CrossEntropyLoss()
>>> #調用交叉熵損失
>>> loss_nn = criterion(output,label)
>>> loss_nn
tensor(0.7096, grad_fn=<NllLossBackward>)
>>> #由于F.cross_entropy是一個函數,是以可以直接調用,不需要執行個體化,兩者求得的損失值相同
>>> loss_functional = F.cross_entropy(output,label)
>>> loss_functional
tensor(0.7096, grad_fn=<NllLossBackward>)

           

perception.py:添加連結描述