我有一个形状[batch_size,data_size]的张量t1(等级2),如下所示:
|---------------|--------------|--------------|
| 1.0 | 2.0 | 3.0 |
|---------------|--------------|--------------|
| 4.0 | 5.0 | 6.0 |
|---------------|--------------|--------------|
| 7.0 | 8.0 | 9.0 |
|---------------|--------------|--------------|
和形状[batch_size]的指标张量t2(等级1)如下:
|---------------|--------------|--------------|
| 2 | 1 | 3 |
|---------------|--------------|--------------|
我想实现一个函数(t1,t2)来输出:
|---------------|--------------|--------------|
| 1.0 | 2.0 | 0.0 |
|---------------|--------------|--------------|
| 4.0 | 0.0 | 0.0 |
|---------------|--------------|--------------|
| 7.0 | 8.0 | 9.0 |
|---------------|--------------|--------------|
它看起来像是将t1与t2定义的掩码相乘,但我无法弄清楚如何实现它 .
1 回答
我想你在找
tf.sequence_mask
. See here . 这基本上实现了创建你想知道的面具 . 用法如下:如果没有给出
dtype
,这将创建一个布尔掩码,当尝试乘以t1
时可能会导致问题,这就是为什么我们特别要求float32
.如果
t2
中的最大元素可能小于data_size
,则应使用防止
t1
和mask
之间的形状不匹配 .