【问题标题】:Tensorflow: why softmax outputs [1, 0, 0..., 0]Tensorflow:为什么 softmax 输出 [1, 0, 0..., 0]
【发布时间】:2017-02-14 11:36:26
【问题描述】:

我有一个神经网络模型,它的最后一层是全连接层,有 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 的概率,其余的都是零。 有人可以帮忙解决这个问题吗?

编辑: 输入图像的形状为 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)

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答!添加了网络布局和更多细节。能否请您提出更多建议?
    • 好吧,我最好的建议是开始学习诸如 Udacity 深度学习课程或 Kadenze 深度学习创造性应用课程之类的课程。这样您就可以在玩得开心的同时学习一切!
    • 我会这样做,但现在你能指点我正确的方向吗?
    • 如果您可以将问题表述为 StackOverflow 问题,我想很多人都愿意帮助您。现在,我认为您可以探索我的建议并遵循课程。
    • 我想说声谢谢。课程很棒。这比现成的答案要好得多。
    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多