如何合并一维和二维张量?

时间:2019-06-18 08:53:44

标签: python tensorflow keras conv-neural-network

我正在将输入传递给Conv1d层,为此我需要将时间张量(150)和特征张量(150,15)作为[150,150,15]维的单个张量传递,但无法做到

我尝试使用张量流的堆栈函数

inp=tf.stack([features,times],axis=1)

我希望得到shape[times,features]=[150,150,15]的张量。 但 我收到此错误,

ValueError: Shapes must be equal rank, but are 2 and 1
    From merging shape 0 with other shapes. for 'stack' (op: 'Pack') with input shapes: [150,15], [150].

请帮助!!!

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

  1. tf.stack()期望张量和形状相同的张量。在您的情况下,两者都不匹配。在这里,等级基本上是为张量的元素索引所需的索引数。看起来features的等级为2,而times的等级为1。
  2. 您试图实现的目标在逻辑上并不合理。这样想: times有150个元素。 features具有150 * 15 = 2250个元素。您如何期望通过将这两个张量合计为150 + 2250 = 2400个元素来获得150 * 150 * 15 = 337500个元素?除非您计划复制/添加更多元素,否则这是不可能的。