Keras LSTM ValueError: Ошибка при проверке цели: ожидается, что плотность_23 будет иметь форму (1,), но получен массив с формой (70,) - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь обучить основную c сеть LSTM, но я сталкиваюсь с ошибкой с model.fit. У меня есть два набора данных, каждый из которых содержит 3145 последовательностей длиной 7. Я хочу упаковать эти два набора данных в один и тот же временной шаг. Таким образом, я изменил свои x_train и y_train в следующие фигуры:

x_train.shape = (3145, 70, 2)
y_train.shape = (3145, 70)

Как вы можете видеть, у меня должно быть 3145 сэмплов, каждый с 70 временными шагами, и каждый с 2 ​​объектами и целью. Затем я определяю следующую модель:

model = Sequential()

model.add(LSTM(4, input_shape=(x_train.shape[1], x_train.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

Чтобы тренироваться, я бегу по линии

model.fit(x_train, y_train, epochs=100, batch_size=1, verbose=2)

Но это дает мне ошибку

ValueError: Error when checking target: expected dense_23 to have shape (1,) but got array with shape (70,)

Я смущен относительно того, почему эта ошибка происходит. С 70 временными шагами у меня должно быть 70 целей, верно?

Буду очень признателен за любую помощь в объяснении этой ошибки!

1 Ответ

1 голос
/ 04 апреля 2020

Вам нужны те же единицы измерения во входном слое, что и выходной диммер слоя LSTM. В вашем случае выходной уровень слоя LSTM равен 70, как вы можете видеть в форме.

попробуйте изменить на

model.add(Dense(70))

или позвольте модели вывести количество единиц слоя, например это.

model.add(Dense())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...