TensorFlow入门(二十一、softmax算法与损失函数)
在实际使用softmax计算loss时,有一些关键地方与具体用法需要注意:
交叉熵是十分常用的,且在TensorFlow中被封装成了多个版本。多版本中,有的公式里直接带了交叉熵,有的需要自己单独手写公式求出。如果区分不清楚,在构建模型时,一旦出现问题将很难分析是模型的问题还是交叉熵的使用问题。
示例代码如下:
import tensorflow as tf#labels和logits的shape一样
#定义one-hot标签数据
labels = [[0,0,1],[0,1,0]]
#定义预测数据
logits = [[2,0.5,6],[0.1,0,3]]#对预测数据求一次softmax值
logits_scaled = tf.nn.softmax(logits)
#在求交叉熵的基础上求第二次的softmax值
logits_scaled2 = tf.nn.softmax(logits_scaled)#使用API求交叉熵
#对预测数据与标签数据计算交叉熵
result1 = tf.nn.softmax_cross_entropy_with_logits(labels = labels, logits = logits)#对第一次的softmax值与标签数据计算交叉熵
result2 = tf.nn.softmax_cross_entropy_with_logits(labels = labels, logits = logits_scaled)
result3 = tf.nn.softmax_cross_entropy_with_logits(labels = labels, logits = logits_scaled2)#使用公式求交叉熵
result4 = -tf.reduce_sum(labels*tf.compat.v1.log(logits_scaled),1)#标签数据各元素的总和为1
labels2 = [[0.4,0.1,0.5],[0.3,0.6,0.1]]
result5 = tf.nn.softmax_cross_entropy_with_logits(labels = labels2, logits = logits)#非one-hot标签
labels3 = [2,1]#等价于labels3==[tf.argmax(label,0),tf.argmax(label,1)]
#使用sparse交叉熵函数计算
result6 = tf.nn.sparse_softmax_cross_entropy_with_logits(labels = labels3, logits = logits)print("logits_scaled=",logits_scaled)
print("logits_scaled2=",logits_scaled2)
print("result1=",result1)
print("result2=",result2)
print("result3=",result3)
print("result4=",result4)
print("result5=",result5)
print("result6=",result6)

总结:
使用softmax交叉熵函数计算损失值时,如果传入的实参logits是神经网络前向传播完成后的计算结果,则不需要对logits应用softmax算法,因为softmax交叉熵函数会自带计算softmax
使用sparse交叉熵函数计算损失值时,样本真实值与预测结果不需要one-hot编码,传给参数labels的是标签数数组中元素值为1的位置
由于交叉熵的损失函数只和分类正确的预测结果有关系,因此交叉熵的计算适用于分类问题上,不适用于回归问题。而均方差(MES)的损失函数由于对每一个输出结果都非常重视,不仅让正确的预测结果变大,还让错误的分类变得平均,更适用于回归问题,不适用于分类问题
当使用Sigmoid作为激活函数的时候,常用交叉熵损失函数而不是均方差(MES)损失函数,以避免均方差损失函数学习速率降低的问题。
相关文章:
TensorFlow入门(二十一、softmax算法与损失函数)
在实际使用softmax计算loss时,有一些关键地方与具体用法需要注意: 交叉熵是十分常用的,且在TensorFlow中被封装成了多个版本。多版本中,有的公式里直接带了交叉熵,有的需要自己单独手写公式求出。如果区分不清楚,在构建模型时,一旦出现问题将很难分析是模型的问题还是交叉熵的使…...
UDP通信:快速入门
UDP协议通信模型演示 UDP API DatagramPacket:数据包对象(韭菜盘子) public DatagramPacket(byte[] buf, int length, InetAddress address, int port)创建发送端数据包对象 buf:要发送的内容,字节数组 length&…...
修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)
一:概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec(规约):期望状态 status(状态):当前状态 当创建对象的时候,会按照spec的状态进行创建,如果…...
redis与 缓存击穿、缓存穿透、缓存雪崩
什么是缓存击穿、缓存穿透、缓存雪崩 缓存击穿、缓存穿透和缓存雪崩是与缓存相关的三种常见问题,它们可以在高并发的应用中导致性能问题。以下是它们的解释: 缓存击穿(Cache Miss) 缓存击穿指的是在高并发情况下,有大…...
印度网络安全:威胁与应对
随着今年过半,我们需要评估并了解不断崛起的网络威胁复杂性,这些威胁正在改变我们的数字景观。 从破坏性的网络钓鱼攻击到利用人工智能的威胁,印度的网络犯罪正在升级。然而,在高调的数据泄露事件风暴中,我们看到了政…...
AR动态贴纸SDK,让创作更加生动有趣
在当今的社交媒体时代,视频已经成为了人们表达自我、分享生活的重要方式。然而,如何让你的视频在众多的信息中脱颖而出,吸引更多的关注和点赞呢?答案可能就在你的手中——美摄AR动态贴纸SDK。 美摄AR动态贴纸SDK是一款专为视频编辑…...
MySQL常用命令01
今天开始,每天总结一点MySQL相关的命令,方便大家后期熟悉。 1.命令行登录数据库 mysql -H IP地址 -P 端口号 -u 用户名 -p 密码 数据库名称 -h 主机IP地址 登录本机 localhost或127.0.0.1 -P 数据库端口号 Mysql默认是3306 -u 用户名 -p 密码 …...
Java synchronized 关键字
synchronized 是什么? synchronized 是 Java 中的一个关键字,翻译成中文就是 同步 的意思,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 如何使用 synchronized?…...
滑动窗口算法(C语言描述)
第一种类型:不固定长窗口 问题1:*** C代码1: #include<stdio.h> #include<string.h> #define N 5int min_len(int len1,int len2) {return (len1 < len2 ? len1:len2); }int main() {int target 0;int num[N];scanf("…...
【已修复】vcruntime140.dll有什么用,vcruntime140.dll缺失如何修复
我是网友,今天非常荣幸能够在这里和大家分享关于电脑找不到vcruntime140.dll无法继续执行代码的解决方法。我相信,在座的许多朋友都曾遇到过这个问题,而今天我将为大家介绍五种有效的解决方法。 首先,让我们来了解一下vcruntime1…...
10月12日,每日信息差
今天是2023年10月12日,以下是为您准备的13条信息差 第一、欧盟投资4.5亿欧元在法国建设电池超级工厂。欧洲投资银行是欧盟的贷款机构,也是世界上最大的跨国银行之一 第二、北京银行推出数字人民币智能合约平台 数字人民币预付资金管理产品在商超场景首…...
网络安全技术(黑客学习)——自学方法
如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…...
引领创新浪潮:“Polygon探寻新技术、新治理、新代币的未来之路!“
熊市是用来建设的,Polygon Labs一直在利用这漫长的几个月来做到这一点。 Polygon 是最常用的区块链之一,每周约有 150 万用户,每天超过 230 万笔交易,以及数千个 DApp,Polygon 最近面临着日益激烈的竞争。虽然从交易数…...
Android 13.0 添加自定义服务,并生成jar给第三方app调用
1.概述 在13.0系统产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能 2. …...
PG14归档失败解决办法archiver failed on wal_lsn
问题描述 昨晚RepmgrPG14主备主库因wal日志撑爆磁盘,删除主库过期wal文件重做备库后上午进行主备状态巡查,主库向备库发送wal文件正常,但是查主库状态时发现显示有1条归档失败的记录。 postgres: archiver failed on 000000010000006F000000…...
YB4014是可以对单节磷酸铁锂电池进行恒流/恒压充电管理的集成电路。
概述: YB4014是可以对单节磷酸铁锂电池进行恒流/恒 压充电管理的集成电路。该器件内部包括功率晶 体管,不需要外部的电流检测电阻和阻流二极管 YB4014只需要极少的外围元器件,非常适合于 便携式应用的领域。热调制电路可以在器件的功 耗比较大…...
STL——查找算法及实例
一 前言 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明…...
Ant Design Form.List基础用法
使用 Form.List 使用 项目中需要在新增可以多个如图 代码如下 // An highlighted block <Card title"产品信息" bordered{false}><Form.List name"productList" >{(fields, {add, remove}) > (<>{fields.map((field) > (<Ro…...
怎么优化H5让它可以在300ms以内打开?
移动端H5点击300毫秒延迟问题是由于浏览器为了区分单击和双击事件而导致的,通常会在点击后等待300毫秒以查看是否还会发生第二次点击。为解决这个问题,可以采取以下方法: 使用meta标签: 在HTML文档的头部添加以下meta标签来禁用缩放和调整浏览…...
Zabbix安装出现必要条件检查失败
问题描述 今天在某朋友部署新环境的Zabbix时,系统出现如下的检查失败情况。此环境的基础部分不是我负责,而是其它项目共存的PHP环境,也是挺奇怪的。一般来说,不应该将zabbix与其它系统部署在一起,没有条件哪怕时Docke…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
