各种损失损失函数的使用场景和使用方法: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.mzph.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…

windows, 放方向键设置为vim格式,autohotkey-windows

安装 Autohotkey https://www.autohotkey.com/download/ 设置快捷键 随便找个目录,鼠标右键新建一个autohotkey的脚本。 映射一个键——上左下右 经常打字的人都知道,我们编辑文本时要上下左右移动光标,难免要将手移到方向键再移回来打字。对我这样的懒癌后期患者,这简直不能…

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)…

【手把手 脑把脑】教会你使用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 统计所有学生的信…

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 强制刷…

只需五步学会Maven 3.6.1OR 3.6.3及其他版本的下载安装与配置【图文详解】

第一步,下载并解压缩包 ​第二步,配置两个环境变量 ​第三步,测试是否安装成功 ​第四步,指定本地仓库的路径 第五步,修改镜像仓库 第一步,下载并解压缩包 Maven官方下载地址:https://mav…

只需四步完成java JDK1.8的下载安装与配置【图文详解】

第一步,下载安装包并安装 第二步,安装JDK 第三步,配置三个环境变量 第四步,测试是否安装成功 第一步,下载安装包并安装 Oracle的官方下载地址:https://www.oracle.com/java/technologies/downloads/#ja…

从Maven中央仓库网站下载jar包的两种方式,将会伴随java后端开发者的整个职业生涯

这个肥肠重要的网站就是:https://mvnrepository.com/ 下面我会以mysql-connector-java-8.0.26.jar为例,教会你使用两种方式下载使用jar包资源 首先在搜索栏使用全称或者是关键字对jar包进行搜索 选择你想要的版本 方式一:导入pom文件依赖(…

2021 使用IDEA创建并编写你的第一个Maven项目【图文详解】

1 使用IDEA创建你的第一个Maven项目 2 使用IDEA编写一个Maven项目 1 使用IDEA创建你的第一个Maven项目 新建一个空白项目 File-->New-->Project-->Empty Project 在IDEA中配置JDK 在IDEA中配置Maven 新建一个Maven模块 在test目录下面新建一个resources文件夹 2 使…

能让你的Intellij IDEA 起飞的几个设置(设置背景 字体 快捷键 鼠标悬停提示 提示忽略大小写 取消单行显示)

1 设置主题(背景图片) 2 设置字体 2.1 设置默认的字体及其大小、行间距**墙裂推荐** 2.2 设置字体大小可以随意改变**墙裂推荐** 3 设置鼠标悬停提示 4 提示的时候忽略大小写**墙裂推荐** ​​5 取消单行显示tabs**墙裂推荐** 6 修改类头的文档注释信息 7 设置项目文…

控制台:Unable to import maven project: See logs for details日志:Unable to create injector, see the follow

问题描述: 当我在使用IDEA 完成一个Maven项目的时候,在第一步的pom.xml文件导入依赖时就发生了这个问题,弹窗弹出Uable to import maven project 控制台报 Unable to import maven project: See logs for details的异常。 既然人家都让查看l…

Maven基础教程

1 Maven简介 2 Maven基础概念 2.1 仓库 2.2 坐标 3 依赖的相关知识点 4 生命周期与插件 5 使用Inteli idea完成第一个Maven项目 1 Maven简介 Maven的本质就是一个项目管理工具,用于将项目开发和管理过程抽象成一个项目对象模型(project object model POM) Ma…