我无法理解the Deep MNIST for Experts tutorial中的以下代码。
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
运行keep_prob: 0.5
时 train_step
的目的是什么?
答案 0 :(得分:21)
keep_prob
值用于控制训练神经网络时使用的dropout rate。从本质上讲,它意味着层之间的每个连接(在这种情况下,在最后一个密集连接的层和读出层之间)仅在训练时使用概率0.5
。这减少了过度拟合。有关辍学理论的更多信息,您可以看到原始的paper by Srivastava et al。要了解如何在TensorFlow中使用它,请参阅tf.nn.dropout()
运算符上的文档。
keep_prob
值通过占位符输入,以便相同的图表可用于培训(使用keep_prob = 0.5
)和评估(使用keep_prob = 1.0
)。处理这些情况的另一种方法是为培训和评估构建不同的图表:在当前convolutional.py
模型中查看使用dropout的示例。