假设val
是一个大小为(2,N)的矩阵。我需要将它与大小为mask
的掩码矩阵相乘(K,K)
包含不同索引处的值0和1。这应该输出一个大小为(N, K, K)
的矩阵result
,其中result
的每个子矩阵沿着维度0为(K,K)
矩阵,其中零被val(i,1)
替换,一被val(i,2)
替换。
比如说
mask = tf.constant([[0, 1, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 0],
[0, 1, 0, 0]], dtype=tf.int32)
val = tf.constant([[3, 2, 8, 1, 9, 5, 6], [7, 4, 9, 8, 3, 1, 9]])
那么输出应该是像这样的7 x 4 x 4
矩阵,
result =
tf.Tensor(
[[[ 3. 7. 3. 7.]
[ 7. 3. 3. 7.]
[ 7. 7. 7. 3.]
[ 3. 7. 3. 3.]]
[[ 2. 4. 2. 4.]
[ 4. 2. 2. 4.]
[ 4. 4. 4. 2.]
[ 3. 4. 3. 2.]]
:
:
:
[[ 6. 9. 6. 9.]
[ 9. 6. 6. 9.]
[ 9. 9. 9. 6.]
[ 6. 9. 6. 6.]]]
目前,我使用for循环迭代瓦尔的每一列,以执行以下操作val[0,i]*mask + val[1,i]*(1-mask)
我希望将其矢量化,以结合tensorflow的矩阵乘法功能。
1条答案
按热度按时间e0bqpujr1#
对于
tensorflow
,不需要显式的for循环。编辑:我的代码中有一个错误