深度学习面试题07:sigmod交叉熵、softmax交叉熵
目录
sigmod交叉熵
Softmax转换
Softmax交叉熵
参考资料
|
sigmod交叉熵 |
Sigmod交叉熵实际就是我们所说的对数损失,它是针对二分类任务的损失函数,在神经网络中,一般输出层只有一个结点。
假设y为样本标签,_y为全连接网络的输出层的值,那么,这个对数损失定义为

PS:这个是可以用极大似然估计推导出来的
举例:
y=0,_y=0.8,那此时的sigmod交叉熵为1.171

import numpy as np
def sigmod(x):
return 1/(1+np.exp(-x))
y=0
_y=0.8
-y*np.log(sigmod(_y))-(1-y)*np.log(1-sigmod(_y))
#_y-_y*y+np.log(1+np.exp(-_y))

|
Softmax转换 |
假设向量x=(x1,x2,...,xm),对x进行softmax转换的处理方式为:

显然,x进行softmax处理后,会归一化为[0,1],且和为1
举例:假设x=[0,2,-3], softmax(x)=[0.11849965, 0.8756006 , 0.00589975]
|
Softmax交叉熵 |

在神经网络的多分类中,假设是3分类,那么输出层就有3个神经元。
假设神经网络对某个样本的输出为out = [4,-5,6],样本的真实标签为[0,0,1],此时的softmax交叉熵为0.1269,计算公式为:
①首先对[4,-5,6]做softmax转换,softmax(out)=[1.19201168e-01 1.47105928e-05 8.80784121e-01]
②sum(-y*log(softmax(_y)))
import numpy as np
out = np.array([4,-5,6])
y = np.array([0,0,1])
softmax = np.exp(out)/sum(np.exp(out))
sum(-y*np.log(softmax))
Demo2:

import numpy as np
import tensorflow as tf # 方式1
out = np.array([[4.0, -5.0, 10.0], [1.0, 5.0, 4.0], [1.0, 15.0, 4.0]],dtype=np.float64)
y = np.array([[0, 0, 1], [0, 1, 0], [0, 1, 0]],dtype=np.float64)
softmax = np.exp(out) /np.sum(np.exp(out),axis=1).reshape(-1,1)
res = np.sum(-y * np.log(softmax))/len(y)
print(res) # 方式2
res2 = tf.losses.softmax_cross_entropy(onehot_labels=y, logits=out, label_smoothing=0)
print(tf.Session().run(res2)) # 方式3
res3 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y,logits=out))
print(tf.Session().run(res3))
0.10968538820896588
0.10968538373708725
0.10968538820896594

|
参考资料 |
《图解深度学习与神经网络:从张量到TensorFlow实现》_张平
深度学习面试题07:sigmod交叉熵、softmax交叉熵的更多相关文章
- 深度学习面试题13:AlexNet(1000类图像分类)
目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是 ...
- 深度学习基础系列(五)| 深入理解交叉熵函数及其在tensorflow和keras中的实现
在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数.假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地 ...
- 深度学习面试题29:GoogLeNet(Inception V3)
目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...
- 深度学习面试题27:非对称卷积(Asymmetric Convolutions)
目录 产生背景 举例 参考资料 产生背景 之前在深度学习面试题16:小卷积核级联卷积VS大卷积核卷积中介绍过小卷积核的三个优势: ①整合了三个非线性激活层,代替单一非线性激活层,增加了判别能力. ②减 ...
- 深度学习面试题05:激活函数sigmod、tanh、ReLU、LeakyRelu、Relu6
目录 为什么要用激活函数 sigmod tanh ReLU LeakyReLU ReLU6 参考资料 为什么要用激活函数 在神经网络中,如果不对上一层结点的输出做非线性转换的话,再深的网络也是线性模型 ...
- 深度学习面试题21:批量归一化(Batch Normalization,BN)
目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...
- 深度学习面试题20:GoogLeNet(Inception V1)
目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...
- 深度学习面试题28:标签平滑(Label smoothing)
目录 产生背景 工作原理 参考资料 产生背景 假设选用softmax交叉熵训练一个三分类模型,某样本经过网络最后一层的输出为向量x=(1.0, 5.0, 4.0),对x进行softmax转换输出为: ...
- 深度学习面试题26:GoogLeNet(Inception V2)
目录 第一层卷积换为分离卷积 一些层的卷积核的个数发生了变化 多个小卷积核代替大卷积核 一些最大值池化换为了平均值池化 完整代码 参考资料 第一层卷积换为分离卷积 net = slim.separab ...
随机推荐
- C# 将Excel导出PDF
1.安装所需包,使用nuget安装所需包 1.1.Spire.Xls 1.2.iTextSharp.text.pdf 2.Spire.Xls介绍 将Excel转换为PDF是一个很常用的功能,常见的转换 ...
- Core Animation笔记(动画)
一.隐式动画 layer默认开启隐式动画 禁用隐式动画 [CATransaction setDisableActions:true]; 设置隐士动画时间 //默认0.25s [CATransactio ...
- Dubbo 高级特性实践-泛化调用
引言 当后端Java服务用Dubbo协议作为RPC方案的基础,但部分消费方是前端Restful的PHP服务,不能直接调用,于是在中间架设了Router服务提供统一的基于HTTP的后端调用入口. 而Ro ...
- 将excel中的数据转为json格式
---恢复内容开始--- 用来总结工作中碰导一些错误,可以让自己在碰到相同错误的时候不至于重新走一遍.... 昨天导入数据的时候,碰到了一个问题是将一个大数组里面的每一个元素中的一些不要的去提出掉,本 ...
- Python基础Day1—下
六.Python运行 print() 打印命令,输出到屏幕上 操作: 命令提示符-->输入Python-->文件路径 若输入Python回车报错或者提示没有,则Python解释器没有安 ...
- 基于Java+Selenium的WebUI自动化测试框架(十)-----读取Excel文件(JXL)
之前,我们使用了读取XML文件的方式来实现页面元素的读取,并做成了基础页面类.下面,我们来进行一些扩展,通过Excel来读取页面元素. Excel的使用,大多数人应该都不陌生.那么Java读取Exce ...
- 使用Python的turtle库实现六角形以及正方形螺旋线的绘制
1.六角形的绘制 思路:一个六角形可以看作是两个等边三角形具有共同的中心且垂线互成60°角.所以只需实现一个等边三角形的绘制以及第二个三角形绘制起点的移动即可. 代码如下: import turtle ...
- 开源项目阅读笔记--appium+adb
git上搜了几个platform的代码,有一个项目给我感触挺深的. https://github.com/ThomasHansson/Appium-cross-platform-example/tre ...
- unsupervised learning: clustering介绍
unsupervised learning 上面是监督学习与无监督学习的比较,监督学习的training set是一组带label(y)的训练集,而无监督学习不带有label(y). 上图中的监督学习 ...
- .net框架-字典对象 Hashtable & Dictionary<TKey,TValue> & SortedList
字典对象: 字典对象是表示键值对的集合 字典对象有Hashtable(.net 1.0)及其泛型版本Dictionary<TKey,TValue> 字典对象还包括SortedList及其泛 ...