首页 文章

跨维度的张量流倍增

提问于
浏览
0

让张量 T 具有形状 [B, N, N, 6] ,我想为每个 b in range(B) 乘以 [b, N, N, 0:3] 元素 [b, N, N, 5] 元素 . 请注意,不应更改 [N, N, 4] . 使用tensorflow执行此操作的最佳方法是什么?

我的尝试:

result = tf.empty([B, N, N, 5]) for b in range(B): for i in range(4) result[b, :, :, i] = tf.mul(T[b, :, :, i], T[b, :, :, 5]) result[b, :, :, 4] = T[b, :, :, 4]

1 回答

  • 1

    在TensorFlow中,通常不可能通过分配切片来构建张量值 . 编程模型往往比命令式更具功能性 . 实现计算的一种方法如下:

    result = tf.concat(3, [tf.mul(T[:, :, :, 0:4], T[:, :, :, 5:6]), T[:, :, :, 4:5]])
    

    请注意,您不需要多次乘法,因为(i)原始计算在第0维( for b in range(B) )已经是元素方式,而(ii)TensorFlow将第二个参数广播到第3维中的乘法 .

相关问题