Tensorflow Keras Предсказывает Возврат Вывода Неправильной Формы

#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.