Я пытаюсь настроить модель DeepLabV3Plus из библиотеки keras_cv для использования в пользовательском наборе данных, но при попытке экспорта в формат SavedModel получаю следующую ошибку:
File "C:\Users\u\.pyenv\pyenv-win\versions\3.10.2\lib\site-packages\keras\src\utils\traceback_utils.py", line 731, in error_handler *
return fn(*args, **kwargs)
TypeError: Exception encountered when calling UpSampling2D.call().
unsupported operand type(s) for *: 'NoneType' and 'int'
Arguments received by UpSampling2D.call():
• inputs=tf.Tensor(shape=(None, None, None, 256), dtype=float32)
Это сбивает с толку, поскольку при вызове DeepLabV3Plus.from_preset я указал входную форму для своей модели как [224,224,3], но в сводке модели для всех слоев отображается «Нет фигур» (см. здесь). для вывода model.summary()). Однако в блокнотах, которые я видел, это предполагаемое поведение, даже если вы указываете форму ввода.
Что касается сценария обучения, я использовал следующий код:
model = keras_cv.models.DeepLabV3Plus.from_preset(
"mobilenet_v3_large_imagenet",
num_classes=NUM_CLASSES,
input_shape=[224,224,3],
load_weights=True
)
layers_to_train = 1
def disable_training(x): x.trainable = False
[disable_training(layer) for layer in model.layers[:-layers_to_train]]
model.summary()
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=LEARNING_RATE),
loss=[keras.losses.CategoricalFocalCrossentropy(from_logits=False, alpha=class_weights, gamma=3)],
metrics=[keras.metrics.OneHotMeanIoU(num_classes=NUM_CLASSES), 'accuracy'])
callback_cyclic = CyclicLR(base_lr = LEARNING_RATE, max_lr = MAX_LEARNING_RATE, step_size=STEP_SIZE, mode = CYCLIC_MODE)
history = model.fit(train_dataset, epochs=NUM_EPOCHS, batch_size=NUM_BATCH, validation_data=val_dataset, callbacks=[callback_cyclic])
model.export(savepath_dir+"model.tf")
Подробнее здесь: https://stackoverflow.com/questions/786 ... s-in-model