91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pytorch怎么計算kl散度

發布時間:2022-02-24 09:40:07 來源:億速云 閱讀:635 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關pytorch怎么計算kl散度,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

起因

小編偶然從pytorch討論論壇中看到的一個問題,kl divergence 在TensorFlow中和pytorch中計算結果不同,平時沒有注意到,記錄下。

kl divergence 介紹

KL散度( Kullback–Leibler divergence),又稱相對熵,是描述兩個概率分布 P 和 Q 差異的一種方法。計算公式:

pytorch怎么計算kl散度

可以發現,P 和 Q 中元素的個數不用相等,只需要兩個分布中的離散元素一致。

舉個簡單例子:

兩個離散分布分布分別為 P 和 Q

P 的分布為:{1,1,2,2,3}

Q 的分布為:{1,1,1,1,1,2,3,3,3,3}

我們發現,雖然兩個分布中元素個數不相同,P 的元素個數為 5,Q 的元素個數為 10。但里面的元素都有 “1”,“2”,“3” 這三個元素。

當 x = 1時,在 P 分布中,“1” 這個元素的個數為 2,故 P(x = 1) = 2/5 = 0.4,在 Q 分布中,“1” 這個元素的個數為 5,故 Q(x = 1) = 5/10 = 0.5

同理,

當 x = 2 時,P(x = 2) = 2/5 = 0.4 ,Q(x = 2) = 1/10 = 0.1

當 x = 3 時,P(x = 3) = 1/5 = 0.2 ,Q(x = 3) = 4/10 = 0.4

把上述概率帶入公式:

pytorch怎么計算kl散度

至此,就計算完成了兩個離散變量分布的KL散度。

pytorch 中的 kl_div 函數

pytorch中有用于計算kl散度的函數 kl_div

torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean')

pytorch怎么計算kl散度

計算 D (p||q)

1、不用這個函數的計算結果為:

pytorch怎么計算kl散度

與手算結果相同

2、使用函數:

(這是計算正確的,結果有差異是因為pytorch這個函數中默認的是以e為底)

pytorch怎么計算kl散度

注意:

1、函數中的 p q 位置相反(也就是想要計算D(p||q),要寫成kl_div(q.log(),p)的形式),而且q要先取 log

2、reduction 是選擇對各部分結果做什么操作,默認為取平均數,這里選擇求和

好別扭的用法,不知道為啥官方把它設計成這樣

補充:pytorch 的KL divergence的實現

看代碼吧~

import torch.nn.functional as F
# p_logit: [batch, class_num]
# q_logit: [batch, class_num]
def kl_categorical(p_logit, q_logit):
    p = F.softmax(p_logit, dim=-1)
    _kl = torch.sum(p * (F.log_softmax(p_logit, dim=-1)
                                  - F.log_softmax(q_logit, dim=-1)), 1)
    return torch.mean(_kl)

關于“pytorch怎么計算kl散度”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆山市| 昌黎县| 嘉义县| 石阡县| 葫芦岛市| 奉新县| 离岛区| 田阳县| 陕西省| 开阳县| 绥德县| 灵宝市| 信丰县| 闻喜县| 曲松县| 淅川县| 神木县| 托克托县| 奇台县| 玉环县| 库尔勒市| 济阳县| 工布江达县| 克山县| 和政县| 五河县| 安岳县| 新竹市| 新闻| 巴彦淖尔市| 大理市| 龙泉市| 沭阳县| 汝城县| 吴堡县| 宾川县| 甘洛县| 永州市| 城口县| 湘阴县| 兴国县|