#python #tensorflow2
#python #tensorflow2
Вопрос:
Я загружаю сохраненную модель и для точной настройки добавляю слои классификации к выходным данным загруженной модели, так что это то, что я пишу :
def create_keras_model():
model = tf.keras.models.load_model('model.h5', compile=False)
resnet_output = model.output
layer1 = tf.keras.layers.GlobalAveragePooling2D()(resnet_output)
layer2 = tf.keras.layers.Dense(units=256, use_bias=False, name='nonlinear')(layer1)
model_output = tf.keras.layers.Dense(units=2, use_bias=False, name='output', activation='relu')(layer2)
model = tf.keras.Model(model.input, model_output)
return model
но я нахожу эту ошибку:
ValueError: Input 0 of layer global_average_pooling2d is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, 128]
Может кто-нибудь, пожалуйста, помогите мне и скажите, из-за чего эта ошибка и как я могу решить эту проблему.
Спасибо!
Ответ №1:
Мог бы ответить лучше, если бы у вас была общая model.h5
архитектура или последний слой model.h5
.
В вашем случае входное измерение находится 2
там, где tf.keras.layers.GlobalAveragePooling2D()
ожидается входное измерение 4
.
Согласно tf.keras.слои.Документация GlobalAveragePooling2D, tf.keras.слои.Слой GlobalAveragePooling2D ожидает форму ввода ниже —
Введите форму: если
data_format='channels_last'
: тензор 4D с формой(batch_size, rows, cols, channels)
. Еслиdata_format='channels_first'
: тензор 4D с формой(batch_size, channels, rows, cols)
.
В этом руководстве по tensorflow вы узнаете, как классифицировать изображения кошек и собак, используя обучение передаче из предварительно обученной сети вместе с точной настройкой.