【问题标题】:Are these advisable best practices for convolutional neural networks?这些是卷积神经网络的可取的最佳实践吗?
【发布时间】:2020-05-18 02:32:35
【问题描述】:

这是我对卷积神经网络的理解和我的最佳实践。请告知我的思考过程是否准确。

1) 如果输入集的细节较小,则过滤器尺寸较小。

2) 数量取决于有多少小细节。

3) 始终有一个 maxpool 层,用于向输出层显示图像中最重要的部分。

4) 如果最后几个 epoch 之间的准确率非常小,并且训练时间很长,请考虑提高学习率和/或减少 epochs

5) 如果要使用 dropout,请在两个密集层之间使用它,最好在输出层之前使用它

提前感谢您的专业知识。

【问题讨论】:

    标签: python tensorflow deep-learning neural-network conv-neural-network


    【解决方案1】:

    让我们逐点评估。

    1) 如果输入集有小细节,则使用更小的过滤器尺寸。 -> 是的,您可以使用最常用的 3x3 过滤器,或者如果需要,可以使用 2x2。但是,您仍然需要进行大量原型设计。除此之外,过滤器的数量与层的位置成正比。因此,在第一层,有 16 个,然后是下一层 32,依此类推。

    2) 数量取决于有多少小细节。 -> 你不知道小细节的数量。神经网络实际上是一个黑盒,到目前为止还没有严格的数学方法来定义神经网络。

    3) 始终有一个 maxpool 层,用于向输出层显示图像中最重要的部分。 -> 按照这种逻辑,您只需将 MaxPool 放在网络的末端。通常,在 2-3 个 Conv 层之后有一个 MaxPool。 MaxPool 的重点是突出重要功能,同时减少参数空间。谨慎使用它会破坏它的目的。

    4) 如果最后几个 epoch 之间的准确率非常小,并且训练时间很长,请考虑提高学习率和/或减少 epoch。 -> 准确性通常会在训练结束时减慢增长速度。即使在学习率计划中,您也可以降低学习率 w.r.t 以增加 epochs。不要期望在训练结束时准确度会有很大的提高。尝试找到一个好的学习率并训练直到满意 w.r.t 验证集。

    5) 如果要使用 dropout,请在两个密集层之间使用它,最好是在输出层之前。 -> dropout 的意义在于给出正则化效果。您也可以在 Conv 层中使用 dropout。使用dropout减少过拟合,位置无所谓。在 Dense 层中使用 dropout 的有效性应该更高,因为它们在网络末端持有导致预测的权重,但如果可能的话,应该在整个网络中使用 dropout。或者你可以在层权重上使用正则化器。

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多