Tensorflow 可变长度rnn填充和遮罩填充渐变

Tensorflow 可变长度rnn填充和遮罩填充渐变,tensorflow,Tensorflow,我正在构建一个rnn,并使用sequene_length参数为批处理中的序列提供一个长度列表,并且批处理中的所有序列都填充到相同的长度 但是,在执行backprop时,是否可以屏蔽与填充步骤对应的渐变,以便这些步骤对权重更新的贡献为0?我已经像这样屏蔽了它们相应的成本(其中batch_权重是0和1的向量,其中与填充步骤对应的元素是0): 问题是,我不确定通过执行上述操作,填充步骤的渐变是否为零 对于所有帧式/前馈(非经常性)操作,屏蔽损失/成本就足够了 对于所有序列/重复操作(例如,dynami

我正在构建一个rnn,并使用sequene_length参数为批处理中的序列提供一个长度列表,并且批处理中的所有序列都填充到相同的长度

但是,在执行backprop时,是否可以屏蔽与填充步骤对应的渐变,以便这些步骤对权重更新的贡献为0?我已经像这样屏蔽了它们相应的成本(其中batch_权重是0和1的向量,其中与填充步骤对应的元素是0):


问题是,我不确定通过执行上述操作,填充步骤的渐变是否为零

对于所有帧式/前馈(非经常性)操作,屏蔽损失/成本就足够了

对于所有序列/重复操作(例如,
dynamic\u rnn
),始终有一个
sequence\u length
参数,您需要将其设置为相应的序列长度。然后零填充台阶将不会有梯度,或者换句话说,它将有0贡献。

这里
loss = tf.mul(tf.nn.sparse_softmax_cross_entropy_with_logits(logits, tf.reshape(self._targets, [-1])), batch_weights)

self._cost = cost = tf.reduce_sum(loss) / tf.to_float(tf.reduce_sum(batch_weights))