首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将chexnet预训练权重文件加载到Densenet121

无法将chexnet预训练权重文件加载到Densenet121
EN

Stack Overflow用户
提问于 2020-10-16 21:51:44
回答 2查看 470关注 0票数 0

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

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

代码语言:javascript
复制
densenet = tf.keras.applications.DenseNet121(
include_top=False,
weights="CheXNet_Keras_0.3.0_weights.h5",
input_shape=(224,224,3)
)

如果我试一下:-

代码语言:javascript
复制
densenet = tf.keras.applications.DenseNet121(
include_top=True,
weights="CheXNet_Keras_0.3.0_weights.h5",
input_shape=(224,224,3)
)

我将获取ValueError: Shape (1024,1000)和(1024,14)不兼容

EN

回答 2

Stack Overflow用户

发布于 2020-12-21 20:14:15

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

代码语言:javascript
复制
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")
票数 0
EN

Stack Overflow用户

发布于 2021-03-04 20:26:41

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

我推荐这样的东西:

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64390544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档