NLP(5)-softmax和交叉熵

前言

仅记录学习过程,有问题欢迎讨论

感觉全连接层就像一个中间层转换数据的形态的,或者说预处理数据?

代码

softmax就是把输出的y 归一化,把结果转化为概率值!,在分类问题中很常见。
而交叉熵是一种损失函数,也是在分类问题中使用,通常搭配着softmax使用;可以计算分布概率之间的差异;期望是两个概率分布的更相似。

# softMAX --概率归一化
# 主要把输出的y 的可能性 sum = 1
# 比如 判断是否为 猫狗 y = 【猫,狗,都不是】# 【123====[ e^1/(e^1+e^2+e^3) ,e^2/(e^1+e^2+e^3) ,e^3/(e^1+e^2+e^3) ]# 损失函数:
# 均方差 (y-y_pre)**2/n
# 交叉熵:y_true=[1,0,0] y_pred=[0.5,0.4,0.1] =loss==>| 1*log0.5+0*log0.4+0 | = 0.3import torch
import torch.nn as nn
import numpy as np##使用torch计算交叉熵
ce_loss = nn.CrossEntropyLoss()
# 假设有3个样本,每个都在做3分类
pred = torch.FloatTensor([[0.3, 0.1, 0.3],[0.9, 0.2, 0.9],[0.5, 0.4, 0.2]])  # n*class_num
# 正确的类别 == [0,1,0][0,0,1][1,0,0]
target = torch.LongTensor([1, 2, 0])
print(target)
loss = ce_loss(pred, target)
print(loss, "torch输出交叉熵")# 实现softMax函数 x为矩阵格式!!
def softmax(x):return np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True)# 验证softmax函数
# print(torch.softmax(pred, dim=1))
# print(softmax(pred.numpy()))# 将输入转化为onehot矩阵 == [0,1,0][0,0,1][1,0,0]
def to_one_hot(target, shape):one_hot_target = np.zeros(shape)# enumerate 也是一种循环 格式为【index,value】for i, t in enumerate(target):one_hot_target[i][t] = 1return one_hot_target# target_matrix =  to_one_hot(target,pred.shape)
# print(target_matrix)# 实现交叉熵
def cross_entropy(pred, target):batch_size, class_num = pred.shape# 先归一化pred = softmax(pred)# 变为矩阵格式target = to_one_hot(target,pred.shape)# 每一列求entropy = -np.sum(target * np.log(pred), axis=1)return sum(entropy) / batch_sizeprint(cross_entropy(pred.numpy(), target.numpy()), "手动实现交叉熵")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UDP协议深度解析:从原理到应用全面剖析

⭐小白苦学IT的博客主页⭐ ⭐初学者必看:Linux操作系统入门⭐ ⭐代码仓库:Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 前言 随着互联网的蓬勃发展,网络通信协议成为了支撑其稳定运行的关键。UDP协议作为网络通信协议中的重要一员&…

华为ensp中rip和ospf路由重分发 原理及配置命令

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月20日20点21分 路由重分发(Route Redistribution)是指路由器将从一种路由协议学习到的路由信息,通过另一种路由协议通告出去的功…

现货白银保证金交易要先分析趋势

现货白银是保证金交易品种,买卖过程中可能会涉及数十倍的资金杠杆,所以它对投资者的分析水平和交易水平的要求都比较高,所以在进入这个市场之前,投资者需要先学习一些基本的分析方法,当中可以分为基本面和技术面两大流…

每日一坑(pymongo版本从3.*升到4.*)

今天在做代码优化的时候发现pymongo版本不同会出现问题,正常3.*能跑的代码,一旦使用4.2或者4.3版本(其他版本没有试,但应该也有问题)就会出现 ServerSelectionTimeoutError问题,最后到官网找到了问题所在&a…

C++智能指针(二十)

一.RAII(Resource Acquisition Is Initialization) RAII资源获取即初始化,RAII的思想就是在构造时初始化资源,或者托管已经构造的资源。在析构的时候释放资源。一般不允许复制或赋值,并且提供若干的资源访问的方法。比…

URL地址解析至页面展示全过程(面试详细解答)

目录 1、解析URL 2、缓存判断 ​编辑3、DNS解析 ​编辑4、获取MAC地址 5、TCP三次握手 6、HTTP请求 7、服务器处理请求,返回HTTP响应 8、页面渲染 9、TCP四次挥手 10、浏览器解析HTML 11、浏览器布局渲染 1、解析URL 首先会对 URL 进行解析,…

RS232、RS485、RS422、TTL、CAN各自的区别

目录 一:工业串口通信标准RS232、RS485、RS422的区别 第一个区别、硬件管脚接口定义不同 第二个区别、工作方式不同 第三个区别、通信方式不同 第四个区别,逻辑特性不同 第五个区别、抗干扰性、传输距离和传输速率也不同 二:RS232、RS…

CentOS 源码安装 Python3

今天在安装部分服务的时候,由于系统 CentOS 中默认带了 Python2,但是我的项目需要是 Python3 支持,特此将整个安装步骤记录下来。 安装必要的依赖 安装环境依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlit…

docker安装并跑通QQ机器人实践(4)-bs-cqhttp搭建

go-cqhttp,基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现,只需简单的配置, 就可以基于 go-cqhttp 使用框架开发,具有轻量, 原生, 高并发, 低占用, 跨平台等特点。 1 go-cqhttp 官网及可执行文件下载链接 go-cqhttp 官网:ht…

【Linux】详解进程通信中信号量的本质同步和互斥的概念临界资源和临界区的概念

一、同步和互斥的概念 1.1、同步 访问资源在安全的前提下,具有一定的顺序性,就叫做同步。在多道程序系统中,由于资源有限,进程或线程之间可能产生冲突。同步机制就是为了解决这些冲突,保证进程或线程之间能够按照既定…

泛型的初步认识(2)

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x…

优思学院|ISO45001职业健康安全管理体系是什么?

ISO45001:2018是新公布的国际标准规范,全球备受期待的职业健康与安全国际标准(OH&S)于2018年公布,并将在全球范围内改变工作场所实践。ISO45001将取代OHSAS18001,成为全球工作场所健康与安全的参考。 ISO45001:201…

python应用

划分数据集 将数据集划分为训练集和测试集 import os import shutil import random # 数据集路径 images_dir ./images targets_dir ./gt # 划分后的路径 train_images_dir ./train/images test_images_dir ./test/images train_targets_dir ./train/gt test_ta…

微信域名防封/QQ域名防封/域名状态检测/域名防红防封API平台源码

下载地址:API平台源码 这套源码是使用thinkphp3.1.3开发的,可以在PHP5.3-5.6下运行,程序是有一点老了,但是思路仍在!然后,这套源码我已经成功搭建起来了,后台、个人(用户&#xff0…

在瑞芯微RV1126 Linux系统上调试WiFi的详细指南

目录标题 1. **系统和环境准备**2. **检查WiFi设备状态**3. **启用和禁用WiFi接口**4. **扫描可用的WiFi网络**5. **连接到WiFi网络**6. **查看当前的WiFi连接状态**7. **断开和重新连接WiFi**8. **管理WiFi网络配置**9. **使用iw工具进行高级WiFi调试**10. **故障排除和日志获…

算法训练营day16

一、二叉树的最大深度 递归解法 后序遍历(DFS) class Solution {public int maxDepth(TreeNode root) {if (root null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right)) 1;} }算法解析: 终止条件: 当 root 为空,…

力扣---填充每个节点的下一个右侧节点指针 II

给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。 初始状态下,所有 next 指针都…

牛x之路 - Day1

Day1 微积分之屠龙宝刀(武林秘籍) 之前的一些东西都在pdf上记得笔记, 没有在这个上面展示一遍,只好学到相关内容的时候再提叙啦;所以其实再写这个小记的时候,我已经看了一半的书,但是不要紧&am…

nodejs npm 常用的命令

大家好,我是资深前端之路,以下是自己对npm命令的回顾梳理。喜欢的朋友记得点赞关注收藏哟! npm npm init :生成package.json文件。 npm -v:查看npm版本号。 npm i:下载对应的文件包。npm i 下载包名版本号,可以下载制定的版本…

IntelliJ IDEA运行发布传统Java Web Application项目

接 重温8年前项目部署 要求,如何改用IntelliJ IDEA运行发布传统 Java Web Application项目呢,简述步骤如下: 一、下载源码 源码:https://github.com/wysheng/kindergarten 下载后的本地项目路径:/Users/songjianyon…