【问题标题】:Issue with concatenating Keras layers连接 Keras 层的问题
【发布时间】:2020-06-06 05:11:30
【问题描述】:

我正在尝试构建一个 LSTM 模型,以使用邮政编码或 PinCode 过去 7 天的温度、降雨量等来预测给定日期的温度。我知道训练数据集需要被塑造成(观察、时间步长、特征)。我猜我的例子中的特征是温度、降雨量和时间步长是 7。所以如果我有 2 个特征和 7 个时间步长,那么一次观察总共有 14 个变量。我还具有所有 7 个时间步长共有的状态、区域(例如北、西、东、中部等)等特征。由于每个观察都是一个邮政编码,因此对于一个邮政编码的所有 7 天(7 个时间步长),该邮政编码所属的地理状态和区域将是相同的。由于我们无法向 LSTM 输入特征(所有时间步共有),我使用 Keras 函数 API 将这些时间特征提供给 LSTM,并获取 LSTM 的输出并将其与非时间特征(状态、区域等)连接,然后最后有一个致密层。下面是我的代码

Input_LSTM = Input(shape=(7, 2), batch_size=32)  # 7 timesteps and 2 features
x = LSTM(5,  stateful=True)(Input_LSTM)
x = Dropout(0.2)(x)

Input_MLP = Input(shape=(261,),batch_size=32)  
x = concatenate([x,Input_MLP], axis=1)  # Join non-temporal input with LSTM o/p to be fed to a Dense    
# layer
Output = Dense(1)(x)

model = Model([Input_LSTM,Input_MLP],Output)

由于我已经声明 LSTM 是有状态的,我已经为时间和非时间输入提供了 batch_size。当我尝试使用“x = concatenate([x,Input_MLP], axis=1)” 行连接时,出现错误

  File "<__array_function__ internals>", line 6, in concatenate

ValueError: zero-dimensional arrays cannot be concatenated”

连接的两个元素的形状如下

x.shape
Out[186]: TensorShape([Dimension(32), Dimension(5)])      #  Here 5 is the number of neurons in LSTM, 32 is the batch size

Input_MLP.shape
Out[187]: TensorShape([Dimension(32), Dimension(261)])   # Here 261 is the no. of non-temporal features and 32 is the batch size

从网上发现零维数组是标量。但从上面的形状来看,它们似乎不是标量。我还尝试了一个以 Input_MLP 作为输入的 Dense 层,并尝试将这个 Dense 层的输出与 x 连接,但没有成功。

我在网上找不到答案。我究竟做错了什么?任何帮助将不胜感激。

【问题讨论】:

  • 对我来说很好。你用的是什么版本的 keras/tensorflow?
  • 我使用的是 Tensor flow 1.9.0 版本,而 keras 是该 Tensorflow 版本的一部分
  • 我也尝试使用 tf 版本 2.0.0。现在它给出了以下错误“NotImplementedError:无法将符号张量 (dropout_3/Identity:0) 转换为 numpy 数组。”您尝试了哪个 tf 版本,在连接这 2 层时没有问题?

标签: python keras deep-learning time-series lstm


【解决方案1】:

我找到了问题所在。连接 keras 层的函数必须与大写 C 连接。由于我使用的是带有小写“c”的函数,因此它是 numpy 函数,因此会出现该错误。一个小错字花了我很多时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多