【发布时间】:2017-11-25 11:33:47
【问题描述】:
我正在使用 Tensorflow 构建一个卷积神经网络(我都是新手),以便识别字母。我的 dropout 层有一个非常奇怪的行为:如果我不放它(即 keep_proba 为 1),它会表现得非常好并且可以学习(请参阅下面的 Tensorboard 的准确性和损失截图,蓝色训练和测试橙色)。
但是,当我在训练阶段放置 dropout 层时(我尝试使用 0.8 和 0.5),网络什么也没学到:损失在 3 或 4 左右迅速下降并且不再移动(我还注意到我的网络总是预测相同的值,与输入图像无关)。相同的图表:
这种奇怪行为的原因可能是什么?我读过 dropout 是避免过度拟合的好方法。我用错了吗?
如果有用的话,这是我的网络架构:
CONVOLUTION -> MAX_POOL -> RELU -> CONVOLUTION -> MAX_POOL -> RELU -> FC 1024 neurons -> DROPOUT -> OUTPUT LAYER.
非常感谢任何帮助或想法。
【问题讨论】:
-
你能确定你只是添加了一个dropout层并且没有编辑任何其他参数。添加一些代码 sn-ps 会有所帮助。您也可以尝试更改全连接层中的神经元。您是否在最后一层使用
softmax激活? -
尝试在 RELU 和 conv 之间移动 dropout,如果失败,那么您的代码中可能存在一些错误。
-
这没有意义,请出示你的代码
-
我不允许发布代码 sry,但它与 tutorial,“构建多层卷积网络”部分中的代码非常接近
-
@MatiasValdenegro 是的,我就是这么做的,我的 dropout 是在具有 1024 个神经元的全连接层之后。
标签: tensorflow neural-network conv-neural-network tensorboard