TF Keras:ValueError:层序列的输入0与层不兼容:预期ndim=3,实际ndim=2



所以我有形成模式的2D矢量序列。我想预测序列是如何继续的。我有一个start_xy数组,它由顺序为start_x和start_y的数组组成:例如[1,2.4,3.8]并且对于end_xy也是如此。

我想训练一个模型一个序列预测模型:

import numpy as np
import pickle
import keras
from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras.callbacks import ModelCheckpoint
import training_data_generator
tdg = training_data_generator.training_data_generator(500)
trainingdata = tdg.produceTrainingSequences()
print("Printing DATA!:")
start_xy =[]
end_xy =[]
for batch in trainingdata:
for pattern in batch:
order = 1
for sequence in pattern:
start = [order,sequence[0],sequence[1]] 
start_xy.append(start)
end = [order,sequence[2],sequence[3]]
end_xy.append(end)
order = order +1

model = Sequential()
model.add(LSTM(64, return_sequences=False, input_shape=(2,len(start_xy))))
model.add(Dense(2, activation='relu'))
model.compile(loss='mse', optimizer='adam')
model.fit(start_xy,end_xy,batch_size=len(start_xy), epochs=5000,  verbose=2)

但我收到错误信息:

ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [320, 3]

我怀疑我必须以某种方式重塑我的投入,但我还不明白该怎么做。我该如何做到这一点?我这样做对吗?

您大多只需要将数据转换为numpy数组,并对数据进行一些整形,以便模型接受它。

首先将start_xy转换为numpy数组,并将其整形为具有3个dims:

start_xy = np.array(start_xy)
start_xy = start_xy.reshape(*start_xy.shape, 1)

接下来,将LSTM层的输入形状固定为[3,1]:

model.add(LSTM(64, return_sequences=False, input_shape=start_xy.shape[1:]))

如果错误仍然存在,或者出现另一个错误,请告诉我

相关内容

最新更新