self.reward_loss = tf.contrib.seq2seq.sequence_loss(
decoder_outputs_pretrain,
self._target_batch,
self._dec_padding_mask,
average_across_timesteps=False,
average_across_batch=False) * self.reward
- 如果是只知道batch里面句子的长度那么可以使用
tf.sequence_mask()
来获得上述的padding_mask
。
tf.sequence_mask(
lengths,
maxlen=None,
dtype=tf.bool,
name=None
)
- 例子:
tf.sequence_mask([1, 3, 2], 5) # [[True, False, False, False, False],
# [True, True, True, False, False],
# [True, True, False, False, False]]
tf.sequence_mask([[1, 3],[2,0]]) # [[[True, False, False],
# [True, True, True]],
# [[True, True, False],
# [False, False, False]]]
网友评论