ValueError: Ошибка при проверке ввода: ожидалось, что input_2 будет иметь форму (224, 224, 3), но получил массив с формой (244, 244, 3) - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь использовать сохраненный CNN (VGG16), но продолжаю получать следующую ошибку:

ValueError: Error when checking input: expected input_2 to have shape (224, 224, 3) but got array with shape (244, 244, 3)

Вот мой полный код:

import numpy as np 
import keras 
from keras import backend as K 
from keras.models import Sequential 
from keras.layers import Activation 
from keras.layers.core import Dense, Flatten 
from keras.optimizers import Adam 
from keras.metrics import categorical_crossentropy 
from keras.preprocessing.image import ImageDataGenerator
from keras.layers.normalization import BatchNormalization 
from keras.layers.convolutional import *

train_path = "/DATA/train"
valid_path = "/DATA/valid"
test_path = "/DATA/test"
#creating the training, testing, and validation sets 
trainBatches = ImageDataGenerator().flow_from_directory(train_path, target_size=(244,244), classes=['classU', 'classH'], batch_size=20)
valBatches = ImageDataGenerator().flow_from_directory(valid_path, target_size=(244,244), classes=['classU', 'classH'], batch_size=2)
testBatches = ImageDataGenerator().flow_from_directory(test_path, target_size=(244,244), classes=['classU', 'classH'], batch_size=2)
#loading the model & removing the top layer 
model = Sequential() 
for layer in vgg16_model.layers[:-1]:
    model.add(layer)

#Fixing the weights 
for layer in model.layers:
    layer.trainable = False

#adding the new classier 
model.add(Dense(2, activation = 'softmax'))


model.compile(Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(trainBatches, steps_per_epoch=89, validation_data=valBatches, validation_steps=11, epochs=5, verbose=2)

Но я не знаю, что я получаю ошибку. Я думал, ImageDataGenerator () позаботится о генерации данных / пакетов с правильными размерами. Чего мне не хватает?

1 Ответ

0 голосов
/ 18 ноября 2018

Модель VGG в этом случае ожидает, что изображения будут иметь (224, 224), тогда как ваши цели генератора изображений равны (244, 244), следовательно, ваши входные формы получают несоответствие. Вы должны настроить размер цели в соответствии с ожидаемой формой. Документация содержит подробные сведения об ожидаемых входных данных, а также имеет параметр include_top, который удалит последний слой, так что вам не придется делать это вручную.

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