为了账号安全,请及时绑定邮箱和手机立即绑定

连接 Keras 层的问题

连接 Keras 层的问题

Qyouu 2022-12-27 10:10:56
我正在尝试构建一个 LSTM 模型,以使用 Zipcode 或 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 featuresx = 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    # layerOutput = 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 concatenateValueError: zero-dimensional arrays cannot be concatenated”连接的两个元素的形状如下x.shapeOut[186]: TensorShape([Dimension(32), Dimension(5)])      #  Here 5 is the number of neurons in LSTM, 32 is the batch sizeInput_MLP.shapeOut[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 连接起来,但没有成功。我在网上找不到答案。我究竟做错了什么?任何帮助将不胜感激。
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

我找到了问题所在。连接 keras 层的函数必须与大写字母 C 连接。因为我使用的是带有小写字母“c”的函数,所以它是 numpy 函数,因此它给出了那个错误。一个小错字让我浪费了很多时间



查看完整回答
反对 回复 2022-12-27
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信