我已经使用 Tensorflow 中的 CNN 使用三元组数据实现了远程学习。为此,我为每一层设置了一组共享的权重。我想采用 dropout 技术来补偿过度拟合。我正在考虑通过以下方式做到这一点:
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
h_fc2_drop = tf.nn.dropout(h_fc2, keep_prob)
h_fc3_drop = tf.nn.dropout(h_fc3, keep_prob)
这里,h_fci 是前一层的三个数据样本的输出。这带来了一个潜在的问题,即丢失是概率性的,因此即使我提供相同的丢失概率,也可能为三个输出中的每一个输出丢弃不同的神经元组,而理想情况下我希望使用相同的神经元组用于每个。那么在这种情况下实现 dropout 的正确方法是什么?
最佳答案
假设所有东西都具有相同的形状,设置相同的种子应该使它们全部相同。
实际上,虽然数据样本是小批量的,但 tf.nn.dropout 会丢弃整个小批量中的相同单元,因此切换到堆叠示例可能是一个好主意。
关于machine-learning - 使用基于三元组的训练时 Tensorflow CNN 网络中的 Dropout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689670/