Я должен добавить два тензора, один с формой, кратной другой в направлении глубины. Вот пример
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]]]
Есть ли встроенная функция для этого?
Добавьте первый "столбец" 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)
, и в этом случае срез и concat по первой оси:
tf.concat((t1[0:1] + t2, t1[1:]), axis=0).eval()
#array([[[4., 4.],
# [4., 4.]],
# [[3., 3.],
# [3., 3.]]], dtype=float32)