我必须添加两个张量,一个张量在深度方向上是另一个张量的倍数。这是一个例子
t1 = tf.constant(3, shape=[2, 2, 2], dtype=tf.float32)
t2 = tf.constant(1, shape=[2, 2, 1], dtype=tf.float32)
我想使用类似tf.add
的东西将第二张量添加到第一个张量,但仅在形状的第三部分的第一层中添加。有数字
t1 = [[[3, 3], [3, 3]],
[[3, 3], [3, 3]]]
t2 = [[[1, 1], [1, 1]]]
output = [[[4, 4], [4, 4]],
[[3, 3], [3, 3]]]
是否有内置功能可以做到这一点?
答案 0 :(得分:2)
将t1
的第一个'列'与t2
相加,然后与t1
的其余列进行合并:
t1 = tf.constant(3, shape=[2, 2, 2], dtype=tf.float32)
t2 = tf.constant(1, shape=[2, 2, 1], dtype=tf.float32)
tf.InteractiveSession()
tf.concat((t1[...,0:1] + t2, t1[...,1:]), axis=2).eval()
#array([[[4., 3.],
# [4., 3.]],
# [[4., 3.],
# [4., 3.]]], dtype=float32)
请注意,您的第二个示例t2
具有不同的形状,即(1,2,2)
而不是(2,2,1)
,在这种情况下,请沿第一个轴切片并合并:
tf.concat((t1[0:1] + t2, t1[1:]), axis=0).eval()
#array([[[4., 4.],
# [4., 4.]],
# [[3., 3.],
# [3., 3.]]], dtype=float32)