Ошибка при проверке цели: ожидается, что плотный объект будет иметь форму (1,), но получит массив с максимальной формой (15662,) в качестве первого слоя - PullRequest
0 голосов
/ 06 марта 2019

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

print(x_train.shape)
print(y_train.shape)
(15662, 6)
(15662,)

x_train = np.reshape(x_train, (-1,15662, 6)) 
y_train = label_array.reshape(1, -1)

model = Sequential()
model.add(MaxPooling1D(pool_size = 2 , strides=1, input_shape = (15662,6)))
model.add(Dense(5, activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train,  batch_size= 32, epochs=1)

После запуска модели я получаю следующую ошибку:

ValueError: Ошибка при проверке цели: ожидается, что dens_622 (последний слой) будет иметь форму (1,), нополучил массив с формой (15662,)

Я занимаюсь классификацией, и моя цель - двоичная (0,1) Спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Ваша цель должна иметь форму (batch_size, 1), но вы передаете массив формы (1, 15662). Похоже, что 15662 должен быть размером партии, в этом случае x_train должен иметь форму (15662, 6), а y_train должен иметь форму (15662, 1). В этом случае, однако, не имеет никакого смысла иметь слой MaxPooling1D в качестве первого слоя вашей модели, так как для максимального объединения требуется трехмерный ввод (то есть форма (batch_size, time_steps, features)). Вы, вероятно, хотите пропустить слой максимального пула (и слой Flatten). Следующий код должен работать:

# x_train: (15662, 6)
# y_train: (15662,)

model = Sequential()
model.add(Dense(5, activation='relu', input_shape=(6,))) # Note: don't specify the batch size in input_shape
model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train,  batch_size= 32, epochs=1)

Но это, конечно, зависит от того, какие у вас есть данные.

...