如何使用tf.nn.dropout
将相同的辍学掩码应用于张量的每一行?
示例:
我有一个形状(2,2,3)
的3D张量:
[[[ 1. 2. 3.]
[ 4. 5. 6.]]
[[ 7. 8. 9.]
[ 10. 11. 12.]]]
使用dropout时,应对每行应用相同的掩码。此外,当一个条目被删除时,第三个维度的所有元素都应该设置为零。
让我们说在每行/水平滑动中,只丢弃第二个条目,对应于每行[1,0]
的丢失掩码。这应该给出(不包括其他条目的重新缩放):
[[[ 1. 2. 3.]
[ 0. 0. 0.]]
[[ 7. 8. 9.]
[ 0. 0. 0.]]]
通过提供noise_shape
到tf.nn.dropout
我可以确保第三维中的所有元素都设置为零。这可以使用noise_shape=[2,2,1]
完成。但是,我不知道如何确保每个行/切片使用相同的丢失掩码。
答案 0 :(得分:0)
如果将来有人绊倒这个问题,我会自己发布答案。可以通过向noise_shape=[1,2,1]
提供tf.nn.dropout
来实现此行为。或者一般来说,当形状张量(m,n,e)
设置noise_shape=[1,n,1]