【发布时间】:2018-10-20 14:23:56
【问题描述】:
我在 tensorflow 中做一个神经网络,我使用 softmax_cross_entropy 来计算损失,我正在做测试并注意它永远不会给出零值,即使我比较相同的值,这是我的代码
labels=[1,0,1,1]
with tf.Session() as sess:
onehot_labels=tf.one_hot(indices=labels,depth=2)
logits=[[0.,1.],[1.,0.],[0.,1.],[0.,1.]]
print(sess.run(onehot_labels))
loss=tf.losses.softmax_cross_entropy(onehot_labels=onehot_labels,logits=logits)
print(sess.run(loss))
我得到了这个
[[0. 1.]
[1. 0.]
[0. 1.]
[0. 1.]]
0.31326166
为什么不是零??
【问题讨论】:
-
你的 logits 不适合给出零损失。
-
但是为什么呢? logits 和一个热门标签是一回事吗?我不明白
-
不,logits 与一个热标签不同,你将 softmax 应用于 logits,然后你得到与一个热标签相同的东西。
-
函数将softmax应用于logits?对?然后与一个热标签进行比较,之所以不为零,是因为将softmax函数例如应用于1时,结果例如为0.7
-
代码是正确的吧?应用到我的神经网络并只更改我的神经网络输出的 logits?
标签: python tensorflow neural-network conv-neural-network tensorflow-estimator