Наконец, я нашел возможный способ, например:
в качестве показанного кода, я создал новую модель, которая использует предварительно обученные входные данные Resnet50 в качестве входных данных и использует 3 "conv_block_out" в качестве новых моделей. выходы, а в методе вызова я просто называю модель стилем «слой».
для получения подробной информации, вы можете обратиться к моему Github за завершенным кодом .
Фиктивный код:
class FCNLayer(Layer):
def __init__(self, name, resnet50_model):
super().__init__(name=name)
resnet50_model.layers.pop()
resnet50_model.summary()
self.resnet50_model = resnet50_model
def build(self, input_image, FILTER_NUM=4):
layer_names = [
"conv3_block4_out", # 1/8
"conv4_block6_out", # 1/16
"conv5_block3_out", # 1/32
]
layers = [self.resnet50_model.get_layer(name).output for name in layer_names]
self.FCN_left = Model(inputs=self.resnet50_model.input, outputs=layers)
......
def call(self, input_image, training=True):
pool3, pool4, pool5 = self.FCN_left(input_image)
.......