#python #tensorflow #keras #conv-neural-network #resnet
Вопрос:
Я пытаюсь предсказать одно изображение. Но моя модель возвращает массив предсказаний с формой (1,1,1,2048), когда это должно быть (1,10). Есть идеи, что я делаю не так? Моя форма ввода x правильна в (1,32,32,3).
ResNet50V2():
IMG_SHAPE = (32, 32, 3)
return tf.keras.applications.ResNet50V2(input_shape=IMG_SHAPE, include_top=False, weights=None, classes=10)
model = ResNet50V2()
x = x[None, :]
predictions = model.predict(x)
Ответ №1:
Вы загружаете свою keras-модель с параметром
include_top=False
какие разрезы полностью подключенного слоя проекции, который отвечает за проецирование выходных данных модели на ожидаемое количество классов. Измените параметр на True.
Ответ №2:
Это связано с тем, что вы отключаете top с помощью параметра включить top, который удаляет окончательный слой классификации. Вам нужно либо добавить свой собственный слой с 10 классами, либо удалить параметр include top и переобучить сеть с нужными входными данными.
Ответ №3:
Сеть классификации изображений обычно работает в течение 2 этапов обработки. Первый-это извлечение объектов, мы называем это «базой», и он состоит из стека слоев для поиска и усиления шаблонов на изображении(2DConv, Relu и MaxPool). Второй — это «голова», и он используется для классификации извлеченных объектов с предыдущего шага. Ваш код получает исходные данные «базы» без классификации, и, как заявили другие вежливые люди, решение заключается в добавлении пользовательской «головы» или изменении параметра include_top на True.