【问题标题】:Is there a way to ensemble two keras (h5) models trained for same classes有没有办法集成两个针对同一类训练的 keras (h5) 模型
【发布时间】:2021-08-11 07:53:27
【问题描述】:

我已经为相同的类标签训练了两个具有不同数据集的 keras 模型。我怎样才能将模型 keras_model.h5 和 keras_model2.h5 集成在一起并制作另一个 keras 模型说 keras_ensemble.h5。我试过参考各种互联网资源,但不是运气。 有人可以帮我提供集成它的代码吗? Here are the models I've trained

请帮助我完成这个。谢谢。

编辑: 这是我的代码,在回答我的问题 Frightera 的人的帮助下我得以完成

 import tensorflow.keras
    import tensorflow as tf
    from PIL import Image, ImageOps
    import numpy as np
    
    # Disable scientific notation for clarity
    np.set_printoptions(suppress=True)
    
    # Load the model
    keras_model = tensorflow.keras.models.load_model('keras_model.h5', compile=False)
    keras_model._name = 'model1'
    keras_model2 = tensorflow.keras.models.load_model('keras_model2.h5', compile=False)
    keras_model2._name = 'model2'
    models = [keras_model, keras_model2]
    #model_input = tf.keras.Input(shape=(125, 125, 3))
    model_input = tf.keras.Input(shape=(224, 224, 3))
    model_outputs = [model(model_input) for model in models]
    ensemble_output = tf.keras.layers.Average()(model_outputs)
    ensemble_model = tf.keras.Model(inputs=model_input, outputs=ensemble_output)

编辑 如何获得 h5 格式的 keras 集成模型?

【问题讨论】:

    标签: python machine-learning keras ensemble-learning image-classification


    【解决方案1】:

    你可以像这样对它们进行平均集成:

    models = [keras_model, keras_model2]
    model_input = tf.keras.Input(shape=(125, 125, 3))
    model_outputs = [model(model_input) for model in models]
    ensemble_output = tf.keras.layers.Average()(model_outputs)
    ensemble_model = tf.keras.Model(inputs=model_input, outputs=ensemble_output)
    

    【讨论】:

    • 非常感谢,我遇到了几个错误。如果您能调查一下,我将不胜感激。我在执行您的建议后编辑了我的问题。
    • (125,125,3) 这里只是一个例子,你需要根据你的需要改变它。在你的情况下(224,224,3)。你确定这两个模型都包含相同的类标签吗?似乎一个有 12 个标签,另一个有 13 个标签。 @ShooriyaSridharan
    • 原来我在其中一个模型中有 13 个标签,我已经对其进行了纠正,现在可以正常工作了。如何获得新集成模型的 keras(h5)?
    • 与任何其他 keras 模型相同。只需使用model.save()保存即可
    【解决方案2】:
    import tensorflow.keras
    import tensorflow as tf
    from PIL import Image, ImageOps
    import numpy as np
    
    # Disable scientific notation for clarity
    np.set_printoptions(suppress=True)
    
    # Load the model
    keras_model = tensorflow.keras.models.load_model('APPLE/apple_model1.h5', compile=False)
    keras_model._name = 'model1'
    keras_model2 = tensorflow.keras.models.load_model('APPLE/apple_model2.h5', compile=False)
    keras_model2._name = 'model2'
    models = [keras_model, keras_model2]
    #model_input = tf.keras.Input(shape=(125, 125, 3))
    model_input = tf.keras.Input(shape=(224, 224, 3))
    model_outputs = [model(model_input) for model in models]
    ensemble_output = tf.keras.layers.Average()(model_outputs)
    ensemble_model = tf.keras.Model(inputs=model_input, outputs=ensemble_output)  
    
    ensemble_model.save('APPLE/ensemble_apple.h5')
    

    【讨论】:

      猜你喜欢
      • 2019-08-25
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多