Tensorflow - 如何在每行使用相同的辍学掩码

时间:2017-11-17 09:54:03

标签: tensorflow

如何使用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_shapetf.nn.dropout我可以确保第三维中的所有元素都设置为零。这可以使用noise_shape=[2,2,1]完成。但是,我不知道如何确保每个行/切片使用相同的丢失掩码。

1 个答案:

答案 0 :(得分:0)

如果将来有人绊倒这个问题,我会自己发布答案。可以通过向noise_shape=[1,2,1]提供tf.nn.dropout来实现此行为。或者一般来说,当形状张量(m,n,e)设置noise_shape=[1,n,1]