softmax激活函数解释

时间:2018-01-18 08:45:46

标签: tensorflow neural-network softmax

我在张量流中有一个神经网络,它有三个隐藏层,输出层有两个神经元,它由一个热编码值表示(可能输出0或1所以[1,0]和[0,1] ])。 输入层由60个神经元组成,隐藏层内的激活是reLU,我使用AdamOptimizer,学习率为0.001。 当我尝试计算网络模型的结果时遇到问题:

预测 - 表示网络输出的变量

prediction_run = sess.run(prediction, feed_dict={x: mydata.reshape(1, 60)})
print("Original class: ", [1, 0], "Predicted values: ", prediction_run)

这将输出: 原始类:[1. 0.]预测值:[[1.00000000e + 00 3.35827508e-08]]

由于我m using the softmax in the final layer, isn't this supposed to be an output that will sum up to 1? Like a probability or something. I无法理解这些预测数字,因为softmax应该对它们进行转换,但事实并非如此。

self.tf.nn.softmax(self.tf.matmul(last_hidden_layer_activation, `output_layer_weights) + output_layer_biases)

有什么想法?

1 个答案:

答案 0 :(得分:1)

你是对的。 Softmax输出应该总和为1。

问题在于浮点数。在浮点数的情况下,没有绝对零的东西。浮点总是有一点不确定性。更多信息here