#python #machine-learning #keras #deep-learning
#python #машинное обучение #keras #глубокое обучение
Вопрос:
Я учусь создавать нейронную сеть с Sequential
помощью from keras
, но я получаю сообщение об ошибке, когда запускаю это:
X = [
[[1,4,5],[7,8,15],[13,16,45],[19,32,135]],
[[0,0,0],[1,4,9], [16,25,36],[49,64,82]],
[[1,1,1], [2,2,2], [1,1,1], [2,2,2]]
]
y = [
[[25,64,405], [31,128,1215]],
[[100,121,144], [169,196, 225]],
[[1,1,1],[2,2,2]]
]
X= np.array(X)
Y= np.array(y)
model = keras.models.Sequential()
model.add(LSTM(16, activation='relu', input_shape=(4, 3)))
model.add(Dense(32, activation='relu'))
model.add(Dense(3))
model.compile(loss='mse', optimizer='adam')
# fit network
model.fit(X, y, epochs=10, batch_size=4)
return model
Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 3 arrays:
Я думал, что Sequential должен принимать 3D-массив, где я указал количество timesteps=4
и features=3
, но, похоже, что-то не так с моим форматированием. Кто-нибудь может сказать мне, что я делаю не так?
Ответ №1:
Прежде всего, вы подгоняете модель к y и к Y. Во-вторых, Y должен быть массивом (None, 3), поскольку ваша сеть выводит 3 значения, но Y равен (None, 2, 3).
Начните с исправления этих ошибок и посмотрите, пойдет ли что-то не так впоследствии
Комментарии:
1. Спасибо за опечатку! Но я думаю, что мой Y — это массив (3,4,3)? Разве последний слой не должен иметь только 3 узла для каждого объекта? Я не понимаю, что такое Y (None,2,3) или почему это должен быть массив (None,3). В принципе, я ожидаю, что my
model
примет первый 2d-списокX
и вернет что-то похожее на первый 2d-списокY
, затем примет второй 2d-списокX
и вернет второй 2d-списокY
и так далее — по крайней мере, так я понял свою кодировку, хотя и не уверен, что это согласуется с тем, что делает мой код.2. Ваш X равен (Нет, 4, 3). Ваш Y равен (Нет, 2, 3). Y должно быть (Нет, 3)
3. Я говорю «Нет», потому что первое измерение не влияет на сеть.
4. Есть несколько способов справиться с этим. Я предлагаю передать прогноз для первого временного шага в модель для прогнозирования второго временного шага.
5. Может быть, также использовать activation =‘relu’ в последнем слое?