tensorflow求lost(cost)损失函数的几种典型实现方法
来源:互联网 发布:丝绒窗帘价格知乎 编辑:程序博客网 时间:2024/06/01 11:20
最近在用tensorflow平台,需要用到自己构造cost函数,故记录如下:
tensorflow求lost(cost)损失函数的几种典型实现方法
参考文献
参考文献
1:Negative log-likelihood function( 也被称作 Cross-Entropy cost function.)
一般在softmax函数之后使用 negiative log-likelihood 作为代价函数( cost function)
原理部分不再赘述:
这种典型的cost函数在tensorflo里面代码如下:
把向量化后的图片 x 和权重矩阵 W 相乘,加上偏置 b ,然后计算每个分类的softmax概率值。
y = tf.nn.softmax(tf.matmul(x,W) + b)cross_entropy = -tf.reduce_sum(y_*tf.log(y))
注意, tf.reduce_sum 把minibatch里的每张图片的交叉熵值都加起来了。我们计算的交叉熵是指整个minibatch的。
2:但是上文的网络的output先经过了softmax操作,tensorflow的默认计算cost函数tf.nn.softmax_cross_entropy_with_logits
是不需要在输入前对网络的output进行softmax的:
注意这里:
WARNING: This op expects unscaled logits, since it performs a softmax
on logits
internally for efficiency. Do not call this op with the
output of softmax
, as it will produce incorrect results.
因此用默认函数计算cost函数方法如下:
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits, onehot_labels, name='xentropy')loss = tf.reduce_mean(cross_entropy, name='xentropy_mean')
注意这里的onehot_labels需要对样本类别标签进行onthot编码,onehot编码是机器学习中常用的工具,假如当前训练样本共5个类,当前label为3,onthot后为00100,类别5编码后是00001
对应代码是onehot_labelstf.one_hot(y,n_classes)
3:tensorlayer中计算soct函数提供了一种不需要编码的方法:
这里的y不需要onthot编码
import tensorlayer as tlcost = tl.cost.cross_entropy(pred, y, name='cost') #这里的y不需要onehot,是整数,例如3
未安装tensorlayer 的话,可参考tensorlayer
4:接下来我想讲讲对损失函数计算的具体理解
假如batchsize=8
训练样本总类别为5
那么一个batchsize的数据经过神经网络最后的输出为[8,5]
对其进行softmax操作之后每一行5个元素的含义就是属于五个类别的概率,假如当前某一个正确标签为2的softmax输出为[0.1,0.5,0.01,0.3,0..09]
那么它的cost为-log([0.1,0.5,0.01,0.3,0..09])*[0,1,0,0,0]T
[0,1,0,0,0]T是一个列向量,cost=-log(0.5)=0.3,我们的目的是使得cost最小,由于-log(1)=0是最小值,因此我们就是不断让该样本的分数向着自己正确类别对应的概率靠近。
对于同一个batch内部不用的样本,分别像上面一样计算然后求mean或者sum最后cost的值,然后最小化cost即可!
- tensorflow求lost(cost)损失函数的几种典型实现方法
- Tensorflow实现经典损失函数
- 求字符串长度的函数的几种实现方法
- TensorFlow四种损失函数
- 几种损失函数(Loss Function)
- Oracle一个典型行列转换的几种实现方法
- Oracle一个典型行列转换的几种实现方法
- Oracle典型行列转换的几种实现方法
- Oracle一个典型行列转换的几种实现方法
- sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)
- 损失函数(loss function也叫作cost function)
- tensorflow学习笔记(三):损失函数
- TensorFlow损失函数(loss function)
- Tensorflow 损失函数定义
- TensorFlow损失函数专题
- TensorFlow自定义损失函数
- 神经网络之cost函数损失函数,
- 损失函数(Loss function)和代价函数(成本函数)(Cost function)的区别与联系
- 题目1039:Zero-complexity Transposition
- 数据库、表切分
- MEF——.NET中值得体验的精妙设计
- Linux常用命令(28)之基本权限管理
- 【工作笔记】从零开始学ExtJs6( 四)—— 首页树状菜单和Tab页的实现
- tensorflow求lost(cost)损失函数的几种典型实现方法
- 关于Repository模式
- DSP初识(一)
- 在windows中配置PHP开发环境
- 集群、分布式、负载均衡区别
- 什么是领域驱动设计(Domain Driven Design)?
- CentOS 7.0 安装配置LAMP服务器方法(Apache+PHP+MariaDB)
- ORM框架
- 【Unity Shaders】Unity里的雾效模拟