日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

PyTorch之torch.nn.CrossEntropyLoss()

發(fā)布時(shí)間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch之torch.nn.CrossEntropyLoss() 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 簡(jiǎn)介
    信息熵: 按照真實(shí)分布p來(lái)衡量識(shí)別一個(gè)樣本所需的編碼長(zhǎng)度的期望,即平均編碼長(zhǎng)度

    交叉熵: 使用擬合分布q來(lái)表示來(lái)自真實(shí)分布p的編碼長(zhǎng)度的期望,即平均編碼長(zhǎng)度

    多分類任務(wù)中的交叉熵?fù)p失函數(shù)

  • 代碼

  • 1)導(dǎo)入包

    import torch import torch.nn as nn

    2)準(zhǔn)備數(shù)據(jù)
    在圖片單標(biāo)簽分類時(shí),輸入m張圖片,輸出一個(gè)m x N的Tensor,其中N是分類個(gè)數(shù)。比如輸入3張圖片,分三類,最后的輸出是一個(gè)3 x 3的Tensor,舉個(gè)例子:

    x_input=torch.randn(3,3) print('x_input:\n',x_input) y_target=torch.tensor([1,2,0])


    3)計(jì)算概率分布
    第123行分別是第123張圖片的結(jié)果,假設(shè)第123列分別是貓、狗和豬的分類得分。
    然后對(duì)每一行使用Softmax,這樣可以得到每張圖片的概率分布。

    softmax_func=nn.Softmax(dim=1) soft_output=softmax_func(x_input) print('soft_output:\n',soft_output)


    這里dim的意思是計(jì)算Softmax的維度,這里設(shè)置dim=1,可以看到每一行的加和為1。比如第一行0.1022+0.3831+0.5147=1。

    4)對(duì)Softmax的結(jié)果取自然對(duì)數(shù)

    log_output=torch.log(soft_output) print('log_output:\n',log_output)


    對(duì)比softmax與log的結(jié)合與nn.LogSoftmaxloss(負(fù)對(duì)數(shù)似然損失)的輸出結(jié)果,兩者是一致的。

    logsoftmax_func=nn.LogSoftmax(dim=1) logsoftmax_output=logsoftmax_func(x_input) print('logsoftmax_output:\n',logsoftmax_output)


    5)NLLLoss
    NLLLoss的結(jié)果就是把上面的輸出與y_label對(duì)應(yīng)的那個(gè)值拿出來(lái),再去掉負(fù)號(hào),再求均值。

    nllloss_func=nn.NLLLoss() nlloss_output=nllloss_func(logsoftmax_output,y_target) print('nlloss_output:\n',nlloss_output)

    y_target中[1, 2, 0]對(duì)應(yīng)上述第一行的第二個(gè),第二行的第三個(gè),第三行的第1個(gè):
    (0.9594+0.4241+0.5265)/3=0.6367

    6) CrossEntropyLoss()

    crossentropyloss=nn.CrossEntropyLoss() crossentropyloss_output=crossentropyloss(x_input,y_target) print('crossentropyloss_output:\n',crossentropyloss_output)

    參考鏈接:
    https://blog.csdn.net/qq_22210253/article/details/85229988
    https://zhuanlan.zhihu.com/p/98785902
    https://zhuanlan.zhihu.com/p/56638625

    總結(jié)

    以上是生活随笔為你收集整理的PyTorch之torch.nn.CrossEntropyLoss()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。