【问题标题】:Concatenate two tensors in alternate fashion (Tensorflow)以交替方式连接两个张量 (Tensorflow)
【发布时间】:2017-09-29 05:44:02
【问题描述】:

我想以交替方式连接shape=(None, 16) 的两个张量(因此结果张量必须是shape=(None, 32),其中第一个张量的第一个数组与第二个张量的第一个数组以交替方式混合等等。

我该怎么做?

由于未知的 shape[0],张量不支持 zip 函数,我无法循环张量(张量对象不可迭代)。 我在 Python3 中使用 Tensorflow。

【问题讨论】:

  • 你用的是什么软件?你的问题应该更准确。
  • 我在问题的标题中写了它,现在我编辑并补充说我正在使用 Python3 和 Tensorflow

标签: tensorflow


【解决方案1】:

假设两个张量在外部 (None) 维度中具有相同的形状,并且您希望在两个张量的行之间交替,您可以通过添加带有 tf.expand_dims() 的维度来实现此目的,并与 tf.concat() 连接,然后用tf.reshape() 重塑:

# Use these tensors as example inputs, but the shape need not be statically known.
x = tf.ones([37, 16])
y = tf.zeros([37, 16])

x_expanded = tf.expand_dims(x, 2)                   # shape: (37, 16, 1)
y_expanded = tf.expand_dims(y, 2)                   # shape: (37, 16, 1)

concatted = tf.concat([x_expanded, y_expanded], 2)  # shape: (37, 16, 2)

result = tf.reshape(concatted, [-1, 32])            # shape: (37, 32)

【讨论】:

  • 谢谢,但这不是我必须做的!如果我有两个数组: x = tf.ones([37, 16]) y = tf.zeros([37, 16]) 我想要一个形状的结果数组: (37,64) 其中第一个的 i 数组数组与第二个数组的 i 数组以交替方式混合。所以,在这个例子中,有 37 个长度为 64 的数组:[1,0,1,0,1,0,...]
  • 那么,64 是从哪里来的呢? (我希望连接两个形状为(37, 16) 的数组,正如您所描述的那样产生一个形状为(37, 32) 的数组。)我用(37, 32) 案例的解决方案更新了答案。
  • 是的,显然是 32,抱歉!谢谢你:)
  • 嘿,这就像一个魅力,但我不太明白为什么。它只是一个实现细节,当你重塑一个张量时,它的元素会以交替的方式排序,还是它有数学意义?
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多