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

Моя модель обучения выглядит следующим образом (с использованием Keras).

model = Sequential()
model.add(Dense(100, activation='relu', input_shape = (X_train.shape[0],)))
model.add(Dense(500, activation='relu'))
model.add(Dense(2, activation='softmax'))

Мои входные данные X_train - это массив формы (180,), а соответствующие метки, содержащие y_train, также являются массивом формы (180 ,). Я попытался скомпилировать и подогнать модель следующим образом.

model.compile(loss="sparse_categorical_crossentropy",
             optimizer="adam",
             metrics=['accuracy'])

model.fit(X_train, y_train, epochs = 200)

При запуске model.fit () я обнаружил следующую ошибку:

ValueError: Error when checking input: expected dense_1_input to have
shape (180,) but got array with shape (1,)

Я не уверен что я делаю неправильно, так как я довольно плохо знаком с глубоким изучением. Любая помощь приветствуется. Благодаря.

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

В вашем случае значение input_shape, определенное в первом слое, должно быть (1,):

X_train.shape[0] - это количество выборок, которое имеет каждый образец для формы (1,).

* 1007. * Более того, ваш вызов функции подгонки не будет работать, поскольку ваш вывод имеет форму (2,) (Dense(2)), тогда как форма каждого целевого сэмпла равна (1,) (у вас их 180).
0 голосов
/ 14 февраля 2020

Как писал @Thomas Schillaci, проблема в том, что если вы пишете X_train.shape[0], вы принимаете во внимание количество выборок вашего набора данных. Но в этой строке код хочет знать, сколько функций у вас есть, поэтому вы должны изменить X_train.shape[1], чтобы иметь n ° ввода. Сколько у вас этикеток?

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