machine-learning - 使用基于三元组的训练时 Tensorflow CNN 网络中的 Dropout

标签 machine-learning tensorflow neural-network deep-learning

我已经使用 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/

相关文章:

machine-learning - cat 中的任意数据集检测 Google 的深度学习工作?

python - 使用自定义管道进行交叉验证 scikit-learn

machine-learning - 使用 Neo4j 进行强化学习 : make 2 copies of the graph vs store 2 copies of all values on 1 graph

machine-learning - 损失计算中的Keras组件选择

python - 在 tf.contrib.layers.optimize_loss 中使用指数衰减

neural-network - 从神经网络和再学习中了解第1章示例2

Java-ML(LibSVM) 如何获得类别概率?

keras - Keras 中的自定义损失函数(焦点损失)输入大小错误

neural-network - 为孪生网络中的对比损失选择边际

tensorflow - 在验证数据上使用 tf.train.Supervisor 的默认summary_op?