美文网首页
CNN训练中使用交叉熵损失函数的问题

CNN训练中使用交叉熵损失函数的问题

作者: 阿垃垃圾君 | 来源:发表于2019-03-27 16:10 被阅读0次

之前在学习用tensorflow搭建cnn网络进行训练时,采用了交叉熵损失函数,当时根据文档采用了ylog(y_)的损失函数的形式,结果发现训练中准确率一直很低,并且到一定训练轮数后就不变了。后来调查发现损失函数矩阵在某一轮变成了nan。查阅资料后才知道,由于ylog(y_)这种形式当参数y_为0的时候可能会导致损失函数为nan,导致无法收敛。

解决的方法则是对参数做一个截断,给予一个非常小的非零最小值,这样可以保证损失函数不为nan,使得训练可以正常进行。代码如下:

#原始的代码,交叉熵定义为ylog(y_)求和的均值,
#修改后给y_加了一个非常小的非零正数,使得y_为0时,损失函数不会为nan
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(y * tf.log(y_ ), reduction_indices=[1])) 
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y * tf.log(y_ + 1e-10 ), reduction_indices=[1]))  

修改了损失函数后,重新训练,发现准确率上升,并且最终收敛到一个比较高的准确率上。

参考资料:https://blog.csdn.net/qq_32464407/article/details/79170949

相关文章

  • CNN训练中使用交叉熵损失函数的问题

    之前在学习用tensorflow搭建cnn网络进行训练时,采用了交叉熵损失函数,当时根据文档采用了ylog(y_)...

  • 理解熵,交叉熵和交叉熵损失

    交叉熵损失是深度学习中应用最广泛的损失函数之一,这个强大的损失函数是建立在交叉熵概念上的。当我开始使用这个损失函数...

  • 机器学习常见问题

    1.损失函数 机器学习中损失函数:线性回归使用的就是最小平方和损失函数、Logistic回归使用的交叉熵损失函数....

  • 损失函数的选择

    回归问题常用:均值平方差损失函数(MSE);交叉熵问题常用交叉熵损失函数(CE)。 那为啥? 1.从原理上来讲,C...

  • 损失函数 - 交叉熵损失函数

    参考[1]损失函数 - 交叉熵损失函数

  • 多分类问题的交叉熵计算

    多分类问题的交叉熵   在多分类问题中,损失函数(loss function)为交叉熵(cross entropy...

  • Tensorflow & Keras的loss函数总结

    一、二分类与多分类交叉熵损失函数的理解 交叉熵是分类任务中的常用损失函数,在不同的分类任务情况下,交叉熵形式上有很...

  • 损失函数

    聊聊机器学习中的损失函数 机器学习中的损失函数 平方损失(线性回归) 对数损失(交叉熵损失 softmax, lo...

  • 交叉熵损失函数原理详解

    交叉熵损失函数原理详解 之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问...

  • 交叉熵损失函数

    转自简单的交叉熵损失函数,你真的懂了吗?说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现...

网友评论

      本文标题:CNN训练中使用交叉熵损失函数的问题

      本文链接:https://www.haomeiwen.com/subject/ipozvqtx.html