Tensorflow:为什么softmax输出[1,0,0 ... 0]

时间:2017-02-14 11:36:27

标签: python-3.x tensorflow jupyter-notebook

我有一个神经网络模型,它的最后一层是9个输出神经元的完全连接层。
为了正确训练我的网络,我正在使用softmax_cross_entropy_with_logits。
它训练好,但是当我想评估我的模型时,我也想要概率。
所以我拿一个评估样本并将其提供给网络。
之后我将softmax应用于输出并得到
    [[ 0. 0. 0. 0. 0. 1. 0. 0. 0.]]

这里还有非标准化的概率:

[[ -2710.10620117  -2914.37866211  -5045.04443359  -4361.91601562
-459.57000732   8843.65820312  -1871.62756348   5447.12451172
-10947.22949219]]

我也得到1的可行性,休息是0。 有人可以帮忙解决这个问题吗?

编辑: 输入图像的形状为64 * 160 所有激活功能都是relu。
最大池数为2x2。
在conv_plus_max_pool_layer(x_image,5,1,96)中,5是内核大小。
这是网络布局:

hidden_block_1 = conv_plus_max_pool_layer(x_image, 5, 1, 96)
hidden_block_2 = conv_plus_max_pool_layer(hidden_block_1, 5, 96, 256)
hidden_block_3 = conv_plus_max_pool_layer(hidden_block_2, 3, 256, 384)
hidden_block_4 = conv_plus_max_pool_layer(hidden_block_3, 3, 384, 512)

fc1 = dropout_plus_fc(4 * 10 * 512, 512, hidden_block_4, keep_prob_drop1)
output = dropout_plus_fc(512, model_net10_train.class_num, fc1, keep_prob_drop2)

1 个答案:

答案 0 :(得分:2)

看起来您的网络非常确定输出;)

在这种情况下,如果没有您的网络布局,我认为我们可以为您做很多事情......我的一些直觉:通往您的输出层的图层有太多节点(因此给出了你这些huuuge数字),我怀疑你不使用RELU或tanh等非线性。您可能想要检查的另一件事是权重的初始值(可能太大),以及您正在使用的学习率(可能太高)。