tensorflow - 无法将 chexnet 预训练的权重文件加载到 Densenet121
问题描述
我正在尝试将 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: Shapes (1024, 1000) 和 (1024, 14) 不兼容
解决方案
他们在没有正确输出层的情况下保存了模型,修复方法如下:
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")
推荐阅读
- javascript - Nanogallery2 的灯箱,用于同一站点上的单个图像
- bash - 使用 bash 在一次读取中将二进制文件拆分为任意数量的不同预定大小的段
- import - update_post_meta 属性可见性?
- css - IE11 SVG 转换:翻译不起作用
- ionic-framework - 标签栏未隐藏在 Ionic 5 的子页面上
- tensorflow - 没有参数的 TensorFlow Serving 导出签名
- git - 当 GitLab Runner 尝试获取项目时权限被拒绝
- c# - 将列表中的属性组合到单个可观察对象的反应式方法
- javascript - 使用 ES6 Set 作为 useEffect() 的依赖项。更改未调用效果
- linux - /var/log/daemon.log 占用更多空间如何减少呢?