Несоответствие входных размеров между плотными слоями и извилистыми слоями imagenet при попытке передачи обучения - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь тренировать плотные слои поверх извилистых слоев InceptionV3.Но я не могу инициализировать полностью подключенную модель.Я получаю ValueError.

model_inc = applications.InceptionV3(weights='imagenet', 
                                     include_top=False)

model = Sequential()
model.add(Flatten(input_shape=model_inc.output_shape[1:]))
model.add(Dense(256, activation= 'relu', kernel_initializer='he_normal'))
model.add(Dropout(0.5))
model.add(Dense(9, activation='softmax'))

Я ожидал, что модель успешно скомпилируется, но я получаю "ValueError: Форма ввода" Flatten "не полностью определена (получено (Нет, Нет, 2048)Обязательно передайте полный аргумент "input_shape" или "batch_input_shape" первому слою вашей модели. "

1 Ответ

0 голосов
/ 16 апреля 2019

Вы хотите, чтобы ваш ввод перешел на model_inc, поэтому вы должны определить input_shape там.Что-то вроде следующего должно работать

model_inc = applications.InceptionV3(input_shape=(224,224,3), weights='imagenet', 
                                     include_top=False)
model = Sequential()

# you need to add your base model
model.add(model_inc)

model.add(Flatten())
model.add(Dense(256, activation= 'relu', kernel_initializer='he_normal'))
model.add(Dropout(0.5))
model.add(Dense(9, activation='softmax'))
...