函数原型:
sequence_mask(
lengths,
maxlen=None,
dtype=tf.bool,
name=None
)
参数:
lengths
:整数张量,其所有值小于等于maxlen。maxlen
:标量整数张量,返回张量的最后维度的大小;默认值是lengths中的最大值。dtype
:结果张量的输出类型。name
:操作的名字。
返回值:
- 返回一个表示每个单元的前N个位置的mask张量
举例
import tensorflow as tf
a = tf.sequence_mask([1, 2, 3], 5)
b = tf.sequence_mask([[1, 2], [3, 4]])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(a))
print(sess.run(b))
输出:
# a
[[ True False False False False]
[ True True False False False]
[ True True True False False]]
# b
[[[ True False False False]
[ True True False False]]
[[ True True True False]
[ True True True True]]]
a的分析:maxlen是5,所以一共有5列,lengths的shape为[3],所以有三行,每一行分别前1、2、3个元素为True,最终a的shape是[3, 5]。
b的分析: 因为没有指定maxlen,故maxlen默认取lengths中的最大值4,所以一共有4列,lengths的shape是[2, 2],故b的shape是[2, 2, 4]。也就是最终b中每个单元是长度为4的向量。
转载自:https://blog.csdn.net/weixin_38314865/article/details/83303772