【问题标题】:Build an Ensemble Learning Model for Image Multi-classification from pre-training从预训练构建用于图像多分类的集成学习模型
【发布时间】:2021-04-04 12:39:53
【问题描述】:

我正在尝试为医学图像分类任务创建一个包含三个预训练 VGG16、InceptionV3 和 EfficientNetB0 的集合。这是我基于 Keras 和 Tensorflow 后端的代码:

def load_all_models():
    all_models = []
    model_names = ['model1.h5', 'model2.h5', 'model3.h5']
    for model_name in model_names:
        filename = os.path.join('models', model_name)
        model = tf.keras.models.load_model(filename)
        all_models.append(model)
        print('loaded:', filename)
    return all_models


models = load_all_models()
for i, model in enumerate(models):
    for layer in model.layers:
        layer.trainable = False

print("[INFO] evaluation network ...")
model.evaluate(X_test, verbose=1)
predIdxs = model.predict(X_test, verbose=1)

predprobabilities = model.predict(X_test, verbose=1)
predIdxs = np.argmax(predprobabilities, axis=1)

print(classification_report(y_test.argmax(axis=1), predIdxs, target_names=lb.classes_))

前面的代码提供以下输出:

然后,我将三个网络的输出连接到Dense 层,如下面的代码所示:

ensemble_visible = [model.input for model in models]
ensemble_outputs = [model.output for model in models]
merge = tf.keras.layers.concatenate(ensemble_outputs)
merge = tf.keras.layers.Dense(10, activation='relu')(merge)
output = tf.keras.layers.Dense(3, activation='sigmoid')(merge)
model = tf.keras.models.Model(inputs=ensemble_visible, outputs=output)

但是当我执行代码时,我得到了这个错误:

感谢任何帮助或建议,谢谢!

【问题讨论】:

    标签: python tensorflow keras multiclass-classification pre-trained-model


    【解决方案1】:

    我们正在加载三个模型,错误提示 Flatten 层的名称重复了 3 次。我们只需要更改名称,

    models = load_all_models()
    for i, model in enumerate(models):
       for layer in model.layers:
           if layer.name == "Flatten":
              layer.name = "Flatten_{}".format( i )
           layer.trainable = False
    

    因此,我们将为 Flatten 三个层设置唯一名称,例如 Flatten_0Flatten_1Flatten_2

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2020-05-21
      • 2018-05-27
      • 2019-10-14
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2021-03-23
      相关资源
      最近更新 更多