Я бы попробовал переключить канал для предварительно обученной модели keras

#python #tensorflow #machine-learning #keras #deep-learning

Вопрос:

У меня есть модель Xception.

 Xception = tf.keras.applications.Xception(input_shape=(512, 512, 3), include_top=False)
 

Я объединил модель, чтобы изменить входной канал на 3.

 input_layer = keras.Input(shape=(512, 512, 1), name="img_input")
x = layers.UpSampling3D(size=(1, 1, 3), name="output")(input_layer)
input_model = keras.Model(input_layer, x, name="input_model")

model = keras.Model(input_model, Xception, name="model")
 

однако у меня есть ошибка

 Input tensors to a Functional must come from `tf.keras.Input`. Received: <tensorflow.python.keras.engine.functional.Functional object at 0x7f922942a690> (missing previous layer metadata).
 

Ответ №1:

Вам просто нужно правильно встроиться Xception в вашу новую модель:

 Xception = tf.keras.applications.Xception(input_shape=(512, 512, 3), include_top=False)

input_layer = tf.keras.Input(shape=(512, 512, 1), name="img_input")
x = tf.keras.layers.UpSampling3D(size=(1, 1, 3), name="upsampling")(input_layer)
output = Xception(x)

model = tf.keras.Model(input_layer, output, name="model")
 

Мы создаем новый Input слой, затем выполняем апсэмплинг и в конце концов переходим все к Xception

Вот рабочий блокнот, если вам интересно