好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch 實現計算 kl散度 F.kl_div()

pytorch 實現計算 kl散度 F.kl_div()

熱門標簽:電銷機器人的風險 地圖標注線上如何操作 400電話辦理哪種 開封自動外呼系統怎么收費 河北防封卡電銷卡 應電話機器人打電話違法嗎 天津電話機器人公司 手機網頁嵌入地圖標注位置 開封語音外呼系統代理商

先附上官方文檔說明:https://pytorch.org/docs/stable/nn.functional.html

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

Parameters

input – Tensor of arbitrary shape

target – Tensor of the same shape as input

size_average (bool, optional) – Deprecated (see reduction). By default, the losses are averaged over each loss element in the batch. Note that for some losses, there multiple elements per sample. If the field size_average is set to False, the losses are instead summed for each minibatch. Ignored when reduce is False. Default: True

reduce (bool, optional) – Deprecated (see reduction). By default, the losses are averaged or summed over observations for each minibatch depending on size_average. When reduce is False, returns a loss per batch element instead and ignores size_average. Default: True

reduction (string, optional) – Specifies the reduction to apply to the output: 'none' | 'batchmean' | 'sum' | 'mean'. 'none': no reduction will be applied 'batchmean': the sum of the output will be divided by the batchsize 'sum': the output will be summed 'mean': the output will be divided by the number of elements in the output Default: 'mean'

然后看看怎么用:

第一個參數傳入的是一個對數概率矩陣,第二個參數傳入的是概率矩陣。這里很重要,不然求出來的kl散度可能是個負值。

比如現在我有兩個矩陣X, Y。因為kl散度具有不對稱性,存在一個指導和被指導的關系,因此這連個矩陣輸入的順序需要確定一下。

舉個例子:

如果現在想用Y指導X,第一個參數要傳X,第二個要傳Y。就是被指導的放在前面,然后求相應的概率和對數概率就可以了。

import torch
import torch.nn.functional as F
# 定義兩個矩陣
x = torch.randn((4, 5))
y = torch.randn((4, 5))
# 因為要用y指導x,所以求x的對數概率,y的概率
logp_x = F.log_softmax(x, dim=-1)
p_y = F.softmax(y, dim=-1)
 
 
kl_sum = F.kl_div(logp_x, p_y, reduction='sum')
kl_mean = F.kl_div(logp_x, p_y, reduction='mean')
 
print(kl_sum, kl_mean)
 
 
>>> tensor(3.4165) tensor(0.1708)

補充:pytorch中的kl散度,為什么kl散度是負數?

F.kl_div()或者nn.KLDivLoss()是pytroch中計算kl散度的函數,它的用法有很多需要注意的細節。

輸入

第一個參數傳入的是一個對數概率矩陣,第二個參數傳入的是概率矩陣。并且因為kl散度具有不對稱性,存在一個指導和被指導的關系,因此這連個矩陣輸入的順序需要確定一下。如果現在想用Y指導X,第一個參數要傳X,第二個要傳Y。就是被指導的放在前面,然后求相應的概率和對數概率就可以了。

所以,一隨機初始化一個tensor為例,對于第一個輸入,我們需要先對這個tensor進行softmax(確保各維度和為1),然后再取log;對于第二個輸入,我們需要對這個tensor進行softmax。

import torch
import torch.nn.functional as F

a = torch.tensor([[0,0,1.1,2,0,10,0],[0,0,1,2,0,10,0]])
log_a =F.log_softmax(a)

b = torch.tensor([[0,0,1.1,2,0,7,0],[0,0,1,2,0,10,0]])
softmax_b =F.softmax(b,dim=-1)

kl_mean = F.kl_div(log_a, softmax_b, reduction='mean')
print(kl_mean)

為什么KL散度計算出來為負數

先確保對第一個輸入進行了softmax+log操作,對第二個參數進行了softmax操作。不進行softmax操作就可能為負。

然后查看自己的輸入是否是小數點后有很多位,當小數點后很多位的時候,pytorch下的softmax會產生各維度和不為1的現象,導致kl散度為負,如下所示:

a = torch.tensor([[0.,0,0.000001,0.0000002,0,0.0000007,0]])
log_a =F.log_softmax(a,dim=-1)
print("log_a:",log_a)

b = torch.tensor([[0.,0,0.000001,0.0000002,0,0.0000007,0]])
softmax_b =F.softmax(b,dim=-1)
print("softmax_b:",softmax_b)

kl_mean = F.kl_div(log_a, softmax_b,reduction='mean')
print("kl_mean:",kl_mean)

輸出如下,我們可以看到softmax_b的各維度和不為1:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python 機器學習工具包SKlearn的安裝與使用
  • python數據分析之用sklearn預測糖尿病
  • pandas讀取excel,txt,csv,pkl文件等命令的操作
  • python爬取之json、pickle與shelve庫的深入講解
  • 基于KL散度、JS散度以及交叉熵的對比

標簽:蘭州 宿遷 成都 常州 駐馬店 六盤水 山東 江蘇

巨人網絡通訊聲明:本文標題《pytorch 實現計算 kl散度 F.kl_div()》,本文關鍵詞  pytorch,實現,計算,散度,F.kl,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 實現計算 kl散度 F.kl_div()》相關的同類信息!
  • 本頁收集關于pytorch 實現計算 kl散度 F.kl_div()的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 最近hd免费观看国语| 美女脱一光二净照片| 娇喘两分钟| 手机午夜视频| 夸克 成人无码 在线播放| 午夜一区二区免费视频| 久久婷婷影院| 69国产成人综合久久精品| 高h男男| 吃奶摸下的激情叫床视频| 日韩精品无码久久久人妻浓密汗液| 高黄h文各种play| 蜜桃小说app下载| 受被绑在床头做到崩溃H年下攻| 女人与拘交自述小说| 亚洲色欲色欲www在线成人网| 美女被男人按在床脱内衣 | 东北大坑肉体乱2| 国产成人精品无码亚洲精品| 私房福利写真大尺度裸私秀人| 五月婷婷激情六月| 色综合久久88色综合天天| 在线吃瓜免费吃瓜,今日吃瓜| 丰满人妻一区二区三区四区五区六| 精品国产婬乱毛片| 饥渴放荡受np文| 久久综合热| 激情五月激情综合色区| 亚洲精品成人有声小说| 欧美香蕉在线| 狠狠色噜噜狠狠狠狠69| 一级婬片A片AAA片动漫| 翁虹三级大全在线观看| 国产xvideos国产在线| 欧洲精品h黑人h喷水h失禁h | 99热这里只精品99re6jiujiuri| 公天天吃我奶躁我高小说| a级全黄30分钟免费视频| 精品久久免费一区二区三区四区| 无码久久网| 黄色短片在线观看|