很多代码里面求交叉熵的时候就直接一行代码展示,其中的细节没有详细展示出来。tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=y_, labels=y))
其实这句代码应该是拆分成几个部分的:
- 对y_求softmax,这里命名为y1。
- y × l n ( y 1 ) y{\times ln(y1)} y×ln(y1) (哈达玛积)
- 降维。从(batch_size, n_class) − − > --> −−> (batch_size, ),也就是从向量矩阵 − − > --> −−>数组。
这一步是由函数tf.nn.softmax_cross_entropy_with_logits_v2
完成。 - 用
tf.reduce_mean
,对上一步中得到的数组求均值,并降维,即(batch_size, ) − − > --> −−> (1, )
代码如下:
import tensorflow as tf
# calculate cross_entropy
y = tf.constant