无法加载TensorFlow保存模型:请求解决Kaggle视网膜CNN模型加载问题
模型加载问题解决方案
一、解决full_retina_model.h5加载报错bad marshal data
可能原因及处理方式
- 文件损坏:重新下载模型文件,确认文件大小与原资源一致,避免下载中断导致文件不完整。
- 版本兼容问题:原模型保存时使用的TensorFlow/Keras版本与本地环境差异过大。
- 查看原Kaggle项目的环境版本,调整本地环境匹配;
- 尝试跳过编译加载(若模型包含自定义层,需先定义对应层类):
import tensorflow as tf from tensorflow.keras.models import load_model model = load_model('./full_retina_model.h5', compile=False)
二、解决retina_weights.best.hdf5加载报错
权重文件仅保存模型参数,未包含网络结构,必须先构建与原模型完全一致的结构,再加载权重。原模型基于InceptionV3构建,复现结构后加载权重的代码如下:
import tensorflow as tf from tensorflow.keras.applications import InceptionV3 from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.models import Model # 复现原模型结构 base_model = InceptionV3(weights='imagenet', include_top=False, input_shape=(299, 299, 3)) x = base_model.output x = GlobalAveragePooling2D()(x) x = Dense(1024, activation='relu')(x) # 视网膜病变为5分类任务(等级0-4) predictions = Dense(5, activation='softmax')(x) model = Model(inputs=base_model.input, outputs=predictions) # 加载权重 model.load_weights('./retina_weights.best.hdf5')
若原模型结构有调整,需从原Kaggle notebook中复制完整的模型构建代码,确保结构完全匹配。
内容的提问来源于stack exchange,提问作者Sathvik K S
相关产品推荐
相关产品推荐

