Входы LSTM должны быть в 3 dimensional(samples,timesteps,features)
.И ваши данные, кажется, в 2D.Вы можете использовать функцию numpys reshape()
для преобразования ваших данных в 3D.
Например, если вы используете 1 временной шаг, вам придется изменить его на array.reshape(6,1,30)
или если вы используете 6 временных шагов, тоarray.reshape(1,6,30)
Для получения дополнительной информации о преобразовании входных данных для LSTM вы можете проверить этот сайт
[[update]] Есть так много проблем с вашим кодом
model=Sequential()
InputBatch = np.expand_dims(InputBatch, 0)
print(InputBatch.shape)
model.add(LSTM(100,input_shape=(1,6,30),return_sequences=True))
model.compile(loss='mean_absolute_error',optimizer='adam',metrics=['accuracy'])
model.fit(InputBatch,PositiveOrNegativeLabel,batch_size=6,nb_epoch=10,verbose=1,validation_split=0.05)
Когда вы конвертируете свои данные в (1,6,30), вы в основном говорите, что у вас есть только один образец (только 1), batch_size равен 6, но у вас есть только 1 образец, у вас есть только один образец, ноВы делаете разделение проверки. И так как у вас есть только одно значение X, у него будет только один Y (PositiveOrNegativeLabel), поэтому я установил только одно значение, то есть 1.
Я запустил вашу программу с изменениями с небольшими изменениямис кодом и данными, которые вы указали в вопросе (я изменил NA на 0):
a=np.array([
[0,1520,1295,0,8396,9322,12715,0,5172,7232,11266,0,11266,2757,4416,12020,12111,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,3045,11480,900,5842,11496,4463,0,11956,900,10400,8022,2504,12106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,9307,12003,2879,6398,9372,4614,5222,0,0,2879,10364,6923,4709,4860,11871,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,6689,2818,12003,6480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,3395,1087,11904,7232,8840,10115,4494,11516,7441,8535,12106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,1287,420,4070,11087,7410,12186,2387,12111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
]
)
PositiveOrNegativeLabel=np.array([[1]])
PositiveOrNegativeLabel=PositiveOrNegativeLabel.reshape(1,-1)
PositiveOrNegativeLabel.shape
InputBatch =InputBatch.reshape(1,6,30)
InputBatch.shape
model=Sequential()
model.add(LSTM(1,input_shape=(6,30)))
model.add(Dense(1,activation="sigmoid"))
model.compile(loss='mean_absolute_error',optimizer='adam',metrics=['accuracy'])
model.fit(InputBatch,PositiveOrNegativeLabel,batch_size=1,verbose=1)