python - TensorFlow 连接/堆叠 N 个张量交错最后一个维度

标签 python tensorflow

假设我们有 4 个张量,abcd,它们都具有相同的维度(batch_size, T, C),我们要创建一个新的张量 X,其形状为 (batch_size, T*4, C) > 其中 T*4 在所有张量之间交错循环。

例如,如果abcd是全一、二的张量,分别是三和四,我们期望 X 类似于

[[[1,1,1...],
  [2,2,2...],
  [3,3,3...],
  [4,4,4...],
  [1,1,1...],
  [2,2,2...],
  .
  .
  .
]]

最佳答案

在我看来,您的示例数组实际上具有形状 (batch_size, T, C*4) 而不是 (batch_size, T*4, C)。不管怎样,你可以通过 tf.concat、tf.reshape 和 tf.transpose 得到你需要的东西。一个更简单的 2d 示例如下:

A = tf.ones([2,3])
B = tf.ones([2,3]) * 2
AB = tf.concat([A,B], axis=1)
AB = tf.reshape(AB, [-1, 3])
AB.eval() #array([[1., 1., 1.],
   # [2., 2., 2.],
   # [1., 1., 1.],
   # [2., 2., 2.]], dtype=float32)

连接 A 和 B 以获得形状为 (2,6) 的矩阵。然后你 reshape 它的形状,使行交错。要在 3d 中执行此操作,乘以 4 的维度必须是最后一个维度。因此,您可能需要使用 tf.transpose,使用 concat 和 reshape 进行交错,然后再次转置以重新排序维度。

关于python - TensorFlow 连接/堆叠 N 个张量交错最后一个维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56831972/

相关文章:

python - "pip freeze"给出了与 "help(' 模块不同的模块 ')"

python - 使用tensorflow API对检测到的对象进行计数

python - 在没有 with-as 子句的情况下向图表添加操作

python - Keras:拟合时使用权重

python - 无法将 TensorFlow (Keras) 模型转换为 ONNX

python - 可以使用相同的内核参数在tensorflow或keras中重复使用Con2d吗

Python Wand 将 PDF 转换为 PNG 禁用透明(alpha_channel)

python - 减少尝试次数,python除外

具有相同键的 Python 字典

python - 在 Python 中使用 Keras 自定义奖励损失函数