在 Python keras 中不正确地连接 LSTM 层

Improperly concatenating LSTM layers in Python keras

我有两个具有不同时间分辨率的数据集,我想输入到同一个 LSTM 模型。我 运行 遇到了串联过程的问题,即使我使用的是一个简单的数据集,我也相信我遗漏了一些我看不到的简单东西。让我们来看下面这个简单的例子,它是我正在尝试的方法的简化版本:

import numpy as np
from keras import layers

train_x1 = np.random.randint(0,100,size=(10,10,10)) # 10 samples, 10 time-steps, 10 variables
train_x2 = np.random.randint(0,100,size=(10,30,6)) # 10 samples, 30 time-steps, 6 variables

inp1 = layers.Input(shape=(train_x1.shape[1], train_x1.shape[2]))
inp2 = layers.Input(shape=(train_x2.shape[1], train_x2.shape[2]))

x = layers.LSTM(10)(inp1)
y = layers.LSTM(10)(inp2)

x = layers.Dense(1)(x)
y = layers.Dense(1)(y)

z = np.concatenate([x,y])

但是我得到一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<__array_function__ internals>", line 6, in concatenate
ValueError: zero-dimensional arrays cannot be concatenated

我很困惑这个例子中的错误是从哪里产生的?

xy 是 keras 张量对象,对它们使用 np.concatenate 没有意义。可能您想尝试 keras.layers.Concatenate()([x,y]).