【问题标题】:Unable to load chexnet pre-trained weight file to Densenet121无法将 chexnet 预训练的权重文件加载到 Densenet121
【发布时间】:2020-10-16 13:51:43
【问题描述】:

我正在尝试将 Keras chexNet 权重文件加载到 Densenet121, https://www.kaggle.com/theewok/chexnet-keras-weights

我得到 ValueError:您正在尝试将包含 242 层的权重文件加载到具有 241 层的模型中。 如果我调用densenet121

densenet = tf.keras.applications.DenseNet121(
include_top=False,
weights="CheXNet_Keras_0.3.0_weights.h5",
input_shape=(224,224,3)
)

如果我尝试:-

densenet = tf.keras.applications.DenseNet121(
include_top=True,
weights="CheXNet_Keras_0.3.0_weights.h5",
input_shape=(224,224,3)
)

我会得到 ValueError: 形状 (1024, 1000) 和 (1024, 14) 不兼容

【问题讨论】:

    标签: tensorflow keras pre-trained-model densenet


    【解决方案1】:

    弹出最后一层的答案现在不再起作用,弹出只返回最后一层但模型保持不变。

    我推荐这样的东西:

    densenet = DenseNet121(weights=None, include_top=False, 
                           input_shape=(224, 224, 3), pooling="avg")
    output = tf.keras.layers.Dense(14, activation='sigmoid', name='output')(densenet.layers[-1].output)
    model = tf.keras.Model(inputs=[densenet.input], outputs=[output])
    model.load_weights("./CheXNet_weights.h5")
    

    【讨论】:

      【解决方案2】:

      他们在没有正确输出层的情况下保存了模型,解决方法如下:

      base_model = densenet.DenseNet121(weights=None,
                                  include_top=False,
                                  input_shape=(224,224,3), pooling="avg")
      
      predictions = tf.keras.layers.Dense(14, activation='sigmoid', name='predictions')(base_model.output)
      base_model = tf.keras.Model(inputs=base_model.input, outputs=predictions)
      base_model.load_weights("./temp/CheXNet_Keras_0.3.0_weights.h5")
      base_model.layers.pop()
      
      print("CheXNet loaded")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-08
        • 1970-01-01
        • 2022-01-24
        • 2018-11-27
        • 1970-01-01
        • 2021-03-12
        相关资源
        最近更新 更多