Tensorflow-如何在每行使用相同的退出掩码

Tensorflow-如何在每行使用相同的退出掩码,tensorflow,Tensorflow,如何使用tf.nn.dropout将相同的dropout掩码应用于张量的每一行 例如: 我有一个三维形状的张量(2,2,3): 使用dropout时,应将相同的掩码应用于每一行。此外,当一个条目被删除时,第三维的所有元素都应该设置为零。 假设在每行/水平切片中,只有第二个条目被删除,对应于每行[1,0]的删除掩码。这应给出(不包括其他条目的重新缩放): 通过向tf.nn.dropout提供noise\u形状,我可以确保第三维中的所有元素都设置为零。这可以使用noise\u shape=[2,2,

如何使用
tf.nn.dropout
将相同的dropout掩码应用于张量的每一行

例如:

我有一个三维形状的张量
(2,2,3)

使用dropout时,应将相同的掩码应用于每一行。此外,当一个条目被删除时,第三维的所有元素都应该设置为零。 假设在每行/水平切片中,只有第二个条目被删除,对应于每行
[1,0]
的删除掩码。这应给出(不包括其他条目的重新缩放):


通过向
tf.nn.dropout
提供
noise\u形状
,我可以确保第三维中的所有元素都设置为零。这可以使用
noise\u shape=[2,2,1]
实现。但是,我不知道如何确保每行/每片都使用相同的退出掩码。

如果将来有人在这个问题上出错,我将自己发布答案。该行为可以通过向
tf.nn.dropout
提供
noise\u shape=[1,2,1]
来实现。或者一般来说,当有一个形状的张量
(m,n,e)
设置
噪音\u形状=[1,n,1]

如果将来有人在这个问题上绊倒,我会自己发布答案。该行为可以通过向
tf.nn.dropout
提供
noise\u shape=[1,2,1]
来实现。或者通常,当具有形状张量
(m,n,e)
设置
噪声\u形状=[1,n,1]

[[[  1.   2.   3.]
  [  4.   5.   6.]]

 [[  7.   8.   9.]
  [ 10.  11.  12.]]]
[[[  1.   2.   3.]
  [  0.   0.   0.]]

 [[  7.   8.   9.]
  [ 0.  0.  0.]]]