我有两个形状的张量[1,4],
[1,2,3,4] [0.2,0.3,0.4,0.5]
现在我想在合并层中合并它们(可能使用Tensorflow后端的一些自定义函数),以便它们成为
[1,0.2,2,0.3,3,0.4,4,0.5]
我怎样才能做到这一点?张量的形状是固定的。谢谢你的时间。
答案 0 :(得分:1)
一种可能的解决方案是沿轴0连接张量,然后根据索引收集值,如
import tensorflow as tf
from itertools import chain
A = tf.constant([1, 2, 3, 4])
B = tf.constant([0.2, 0.3, 0.4, 0.5])
# Cast A to be compatible with B
A = tf.cast(A, tf.float32)
# Concat AB one next to the other
AB = tf.concat([A, B], axis=0)
# Generate a list of values in this sequence
# 0, 4, 1, 5, ... in other to indicize the tensors
# use gather to collect values in the specified positions
NEW = tf.gather(AB,
list(
chain.from_iterable((i, i + A.shape[0].value)
for i in range(A.shape[0].value))))
with tf.Session() as sess:
print(sess.run([NEW]))
答案 1 :(得分:0)
使用Tensorflow,您可以使用reshape和concat。这些操作也可以在keras后端使用。
a = tf.constant([1,2,3,4])
b = tf.constant([10,20,30,40])
c = tf.reshape(tf.concat([tf.reshape(a,(-1,1)), tf.reshape(b, (-1,1))], 1), (-1,))
我不知道是否有更直接的方法来实现这一目标。
修改:使用tf.stack
代替tf.concat
存在更简单的解决方案。
c = tf.reshape(tf.stack([a, b], 1),(-1,))