ValueError: вход 0 несовместим со слоем conv2d_5: ожидается ndim = 4, найдено ndim = 2 - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь построить сеть CNN и хотел бы проверить размер слоя, используя output_shape.Но это дает мне ошибку следующим образом:

ValueError: вход 0 несовместим со слоем conv2d_5: ожидается ndim = 4, найдено ndim = 2

Ниже приведен кодЯ пытаюсь выполнить

from keras.layers import Activation

model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28)))

print(model.output_shape)

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете проверить, если по умолчанию количество каналов указано в конце

from keras import backend as K
print(K.image_data_format()) # print current format

В моей системе это печатает "channel_last", что означает последний номер вашего input_shape (28), - количество каналов, а 1 - количество строк.По этой же причине Keras выдает ошибку, поскольку вы не можете применить маску свертки 3 x 3 к изображению, содержащему только 1 строку (с заполнением по умолчанию, установленным на «valid»).

Скорее всего, вы хотите установить input_shape равным (28, 28, 1).

Если вы хотите, чтобы ядро ​​было ядром 3 x 3, то оно должно быть

model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

У вас есть сверточный слой с ядром размером 3 x 3 и шага 3.

...