各種損失損失函數的使用場景和使用方法:KL散度

KL 散度的使用場景

KL散度( Kullback–Leibler divergence),又稱相對熵,是描述兩個概率分布 P 和 Q 差異的一種方法
在這里插入圖片描述

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

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

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

import torch
import torch.nn.functional as Fa = 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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RNN,LSTM,GRU的理解

RNN x 為當前狀態下數據的輸入, h 表示接收到的上一個節點的輸入。 y為當前節點狀態下的輸出,而h′h^\primeh′為傳遞到下一個節點的輸出. LSTM #定義網絡 lstm nn.LSTM(input_size20,hidden_size50,num_layers2) #輸入變量 input_data Variable(tor…

常用的loss函數,以及在訓練中的使用

文章目錄KL 散度L2 loss做標準化處理CElossCTCLossAdaptiveAvgPool2dKL 散度 算KL散度的時候要注意前后順序以及加log import torhch.nn as nn d_loss nn.KLDivLoss(reductionreduction_kd)(F.log_softmax(y / T, dim1),F.softmax(teacher_scores / T, dim1)) * T * T蒸餾lo…

Shell 在訓練模型的時候自動保存訓練文件和模型到指定文件夾

在進行深度學習訓練的過程中,往往會跑很多實驗,這就導致有的實驗設置會忘記或者記混淆,我們最好把train test model 的代碼都copy一遍到指定文件夾中,這樣后面檢查也方便。 用shell指令保存文件 #!/bin/sh GRUB_CMDLINE_LINUX&qu…

Pytorch:數據并行和模型并行,解決訓練過程中內存分配不均衡的問題

文章目錄數據并行單機多卡訓練,即并行訓練。并行訓練又分為數據并行 (Data Parallelism) 和模型并行兩種。 數據并行指的是,多張 GPU 使用相同的模型副本,但是使用不同的數據批進行訓練。而模型并行指的是,多張GPU 分別訓練模型的…

DataParallel 和 DistributedDataParallel 的區別和使用方法

1.DataParallel DataParallel更易于使用(只需簡單包裝單GPU模型)。 model nn.DataParallel(model)它使用一個進程來計算模型參數,然后在每個批處理期間將分發到每個GPU,然后每個GPU計算各自的梯度,然后匯總到GPU0中…

torch.cuda.is_available(),torch.cuda.device_count(),torch.cuda.get_device_name(0)

torch.cuda.is_available() cuda是否可用; torch.cuda.device_count() 返回gpu數量; torch.cuda.get_device_name(0) 返回gpu名字,設備索引默認從0開始; torch.cuda.current_device() 返回當前設備索引;

windows, 放方向鍵設置為vim格式,autohotkey-windows

安裝 Autohotkey https://www.autohotkey.com/download/ 設置快捷鍵 隨便找個目錄,鼠標右鍵新建一個autohotkey的腳本。 映射一個鍵——上左下右 經常打字的人都知道,我們編輯文本時要上下左右移動光標,難免要將手移到方向鍵再移回來打字。對我這樣的懶癌后期患者,這簡直不能…

window設置快捷鍵左右方向鍵

autohotkey-windows快捷鍵設置神器 使用方法 地址

Hbase數據模型及Hbase Shell

目錄 1 數據模型 1.1 相關名詞概念 1.2 模型分析 2 Hbase Shell操作 2.1 命名空間 2.2 表操作 2.2.1 創建表 2.2.2 更改表結構 2.2.3 表的其他操作 2.3 數據操作 2.3.1 添加數據(put) 2.3.2 刪除數據(delete) 2.3.3 獲取數據(get|scan) 3 過濾器 3.1 比較運算符…

非關型數據庫之Hbase

目錄 1 Hbase簡介 1.1 初識Hbase 1.2 Hbase的特性 2 HDFS專項模塊 2.1 HDFS的基本架構 2.1.1 HDFS各組件的功能: 2.2 HFDFS多種機制 2.2.1 分塊機制 2.2.2 副本機制 2.2.3 容錯機制 2.2.4 讀寫機制 3 Hbase組件及其功能 3.1 客戶端 3.2 Zookeeper 3.3 …

MongoDB Shell操作

目錄 1 數據庫操作 2 集合操作 3 文檔操作 3.1 插入文檔(insert|insertOne|insertMany) 3.2插入、刪除的循環操作 3.2 刪除文檔(remove|deleteOne|deleteMany) 3.3 更新文檔(update|save) 3.4 查詢文檔(find) 4 游標 5 索引 6 聚合 1 數據庫操作 當新創建的數據庫里…

MongoDB副本集、分片集的偽分布式部署(保姆級教程)

目錄 1 集群架構(概念篇) 1.1 MongoDB核心組件 1.2 主從復制 1.3 副本集 1.4 分片集 2 集群搭建 2.1 部署副本集(偽分布式) 2.2 分片集部署(偽分布式) 2.3 副本集與分片集區別 1 集群架構(概念篇) MongoDB有三種集群部署模式,分別是主從復制(Master-Slave)…

非關型數據庫之MongoDB

目錄 1 MongoDB簡介 1.1 初識MongoDB 1.2 MongoDB與傳統的關系型數據庫的區別 1.3 MongoDB存儲結構 1.4 BSON支持的數據類型 2 MongoDB Shell操作 3 MongoDB集群操作 1 MongoDB簡介 1.1 初識MongoDB MongoDB來源自英文單詞"Humongous”,譯為“龐大的”…

【手把手 腦把腦】教會你使用idea基于MapReduce的統計數據分析(從問題分析到代碼編寫)

目錄 1 編程前總分析 1.1 數據源 1.2 需要掌握的知識 1.2.1 Hadoop對比java的數據類型 1.2.2 MapReduce流程簡介 1.3.3 MapReduce流程細分 2 編碼階段 2.1 導入依賴 2.2 mapper 2.3 reducer 2.4 main 1 編程前總分析 1.1 數據源 英語,李沐,85,男,20 數學,李沐,54,男…

【細節拉滿】Hadoop課程設計項目,使用idea編寫基于MapReduce的學生成績分析系統(附帶源碼、項目文件下載地址)

目錄 1 數據源(學生成績.csv) 2 hadoop平臺上傳數據源 3 idea代碼 3.1 工程框架 3.2 導入依賴 3.3 系統主入口(menu) 3.4 六個mapreduce 3.4.1 計算每門成績的最高分、最低分、平均分(Mma) 3.4.2 計算每個學生的總分及平均成績并進行排序(Sas) 3.4.3 統計所有學生的信…

【單位換算】存儲單位(bit Byte KB MB GB TB PB EB ZB YB BB)時間單位(ms μs ns ps)長度單位(dm cm mm μm nm pm fm am zm ym)

存儲單位 相鄰單位相差2?,記憶時可以此類推 一字節等于八比特 1 Byte 8 bit 1KB 1024 B 2? B 1MB 1024 KB 2? B 1GB 1024 MB 2? B 1TB 1024 GB 2?? B 1PB 1024 TB 2?? B 1EB 1024 PB 2?? B 1ZB 1024 EB 2?? B 1YB 1024 ZB 2?? B 1B…

Git 的安裝、使用、分支、命令 一篇博客全都學會

目錄 1 版本控制 1.1 什么是版本控制 1.2 為什么需要版本控制 2 Git概述 2.1 Git的工作機制 2.2 分布式版本控制工具與集中式的區別 2.3 Git是如何誕生的 3 Git的安裝 4 Git常用命令 4.1 用戶簽名的設置和修改 4.2 查看用戶簽名的設置 4.3 初始化本地庫 4.4 添加、…

生成一個GitHub的token用于git推送本地庫至遠程庫

1 一步步選擇設置 2 使用鏈接直接跳轉到最后一步的設置頁 git push 的時候需要token,所以在GitHub上生成一個臨時的token 1 一步步選擇設置 2 使用鏈接直接跳轉到最后一步的設置頁 前提是你已經在這個瀏覽器上登陸了GitHub https://github.com/settings/tokens

都2021年了,還不會使用GitHub創建、推送、拉取、克隆遠程庫、團隊協作開發?

1 對自己的遠程庫操作 1.1 在GitHub上創建遠程庫 1.2 推送本地庫至遠程庫 1.3 拉取遠程庫到本地庫 1.4 克隆遠程倉庫到本地 2 對別人的遠程庫兩種操作方式 2.1 使用GitHub進行團隊內協作開發 2.2 使用GitHub進行跨團隊協作開發 眾所周知,GitHub是一個大型的國…

2021 最新 IDEA集成Gitee、Gitee遷移GitHub【圖文講解】

1 創建遠程庫 2 IDEA集成Gitee 2.1 安裝gitee插件并綁定賬號 2.2 IDEA推送本地庫至遠程庫的兩種方式 2.3 修改后推送本地庫至遠程庫 2.4 拉取遠程庫 2.5 使用IDEA克隆遠程庫 3 Gitee遷移GitHub的遠程庫的兩種方式 3.1 自己的賬戶之間遷移 3.2 使用鏈接進行遷移 3.3 強制刷…