一, 交叉熵函数
交叉熵是一个信息论中的概念,但在此我们不深究它的本身意义,我们要知道,交叉熵刻画了两个概率分布之间的距离,在深度神经网络的构建中,我们知道真实值和预测值之间会存在一个差值,这也就是为什么使用交叉熵函数的原因.
给定两个概率分布p,q, 通过q来表示p的交叉熵为
H(p,q) = -∑ p(x) log q(x)
在这里我们要知道交叉熵函数刻画的是两个概率分布之间的距离,但神经网络的输出不一定是一个概率分布,所以,我们将会采用softmax回归函数,softmax回归本身可以作为一个学习算法来优化分类结果,在TensorFlow中,softmax只是一层额外的处理层,它被加在原始输出层和最终输出层中间,目的就是输出一个概率分布.
通过TensorFlow实现交叉熵函数
cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10,1.0)))
y_代表正确结果,y代表预测结果,在这里一定要知道H(p,q)和H(q,p)是不一样的,当交叉熵作为神经网络的损失函数时,前一个代表正确答案,后一个代表预测答案,这一行代码包含了4个不同的TensorFlow运算
tf.clip_by_value()函数可以将一个张量中的数值限制在一个范围内在这个里面就是将y限制在[1e-10, 1.0]这个区间内
tf.log()函数完成了对张量中所有元素依次求对数的功能
"*"和矩阵乘法是不一样的,因为在在TensorFlow中矩阵乘法需要使用matmul()函数进行相乘,在这里的相乘是元素的相乘
两者的区别

本文介绍了交叉熵在深度学习中的作用,它用于衡量概率分布之间的距离。在TensorFlow中,通过`tf.nn.softmax_cross_entropy_with_logits`计算交叉熵,结合softmax层确保输出为概率分布。同时,文章探讨了矩阵乘法与元素乘法的区别,并展示了如何避免log数值问题。
最低0.47元/天 解锁文章
1460

被折叠的 条评论
为什么被折叠?



