Tensorflow сообщает, что вход 0 слоя conv2d несовместим со слоем: ожидаемый ndim = 4, найденный ndim = 3 - PullRequest
0 голосов
/ 24 февраля 2020

Вот мой код:

(x_train, y_train), (x_test, y_test) = mnist.load_data()

def create_model():
    model = tf.keras.models.Sequential()

    model.add(Conv2D(64, (3, 3), input_shape=x_train.shape[1:], activation='relu'))
    model.add(MaxPooling2D(pool_size=2))

    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=2))

    model.add(Flatten())
    model.add(Dense(1024, activation='relu'))
    model.add(Dense(10, activation='softmax'))

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

model = create_model()

форма входных данных (60000, 28, 28). это набор данных Keras Mnist. и вот ошибка

ValueError: Input 0 of layer conv2d_1 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 28, 28]

И я понятия не имею, что с ним не так.

1 Ответ

0 голосов
/ 26 февраля 2020
Input shape
4D tensor with shape: (batch, channels, rows, cols) if data_format is "channels_first" or 4D tensor with shape: (batch, rows, cols, channels) if data_format is "channels_last".

Форма ввода ожидается как (пакет, каналы, строки, столбцы), вы указали количество изображений.

создайте переменную типа image_size=(3,28,28) и

input_shape = image_size

... Это может сработать для вас. или попробуйте

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