tf.sequence_mask()函数
sequence_mask(
lengths, # 掩码的长度序列,内部元素为整数
maxlen=None, # 返回数据的最内层数据维度,整数
dtype=tf.bool, # 数据类型,默认为布尔型
name=None # 操作的命名
示例:
a = tf.sequence_mask(3, dtype=tf.float32)
out: [1, 1, 1]
# maxlen默认为lengths最内层元素的最大值,此处为3
a1 = tf.sequence_mask([3, 2], dtype=tf.float32)
out: [[1, 1, 1], [1, 1, 0]]
# 更高的秩依次类推
a2 = tf.sequence_mask([[3, 2], [2, 3]], dtype=tf.float32)
out: [
[[1, 1, 1], [1, 1, 0]],
[[1, 1, 0], [1, 1, 1]]
]
# 特别的
b = tf.sequence_mask(lengths=5, maxlen=3, dtype=tf.float32)
out: [1, 1, 1]
tf.expand_dims()函数
expand_dims(
input, # 张量
axis, # 需要扩充的秩
name, # 操作名
dim # 效果等同于axis
)
不明白axis和dim同时存在的意义在哪,经过测试,二者效果一致,均可在指定维度上实现秩扩展。直观理解,在指定维度加一层[]。
示例:
a = [[1, 1, 0], [1, 1, 1]]
a1 = tf.expand_dims(a, dim=0)
out: [[[1, 1, 0], [1, 1, 1]]]
a2 = tf.expand(a, dim=1)
out: [[[1, 1, 0]], [[1, 1, 1]]]
a3 = tf.expand(a, dim=2)
out: [[[1], [1], [0]],
[[1], [1], [1]]]
# dim=-1, 相当于在最大秩上扩充维度
a4 = tf.expand(a, dim=-1)
out: [[[1], [1], [0]],
[[1], [1], [1]]]