我想进行迁移学习,我已经加载了这些权重文件,但现在我不知道如何使用这些层来训练我的自定义模型。任何帮助都将不胜感激。以下是我尝试过的示例代码:
local_weights_file= '/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5'pre_trained_model = InceptionV3(input_shape = (150, 150, 3),include_top = False,weights = None)pre_trained_model.load_weights(local_weights_file)for layer in pre_trained_model.layers:layer.trainable = False
回答:
你需要将最后一层的输出作为你最终模型的输入。像这样应该可以工作:
last_layer = pre_trained_model.get_layer('mixed7')last_output = last_layer.output# 将输出层展平为一维x = layers.Flatten()(last_output)# 添加一个具有1,024个隐藏单元和ReLU激活的全连接层x = layers.Dense(1024, activation='relu')(x)# 添加0.2的 dropout 率x = layers.Dropout(0.2)(x) # 添加一个用于分类的最终 sigmoid 层x = layers.Dense (1, activation='sigmoid')(x) model = Model( pre_trained_model.input, x)