You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载trained_model.h5报错OSError:SavedModel文件不存在,求原因

问题原因及解决办法

原因分析

你的模型中使用了hub.KerasLayer加载TF Hub预训练模块,保存为.h5格式时仅存储了模块的引用路径,并未将模块权重嵌入到h5文件内。此前正常运行是因为系统临时目录C:\Users\harsh\AppData\Local\Temp\tfhub_modules\602d30248ff7929470db09f7385fc895e9ceb4c0中还保留着下载好的模块文件,现在该临时文件被清理(比如系统自动清理临时文件、手动删除、切换运行环境),导致加载模型时找不到依赖的模块文件,从而报错。

解决办法

  • 重新下载缺失模块
    先单独执行加载对应TF Hub模块的代码,让TF Hub重新将模块下载到临时目录:

    import tensorflow_hub as hub
    # 替换为你模型中实际使用的TF Hub模块地址
    hub.load("你的TF Hub模块URL/本地路径")
    

    执行完成后,再重新加载trained_model.h5即可。

  • 保存模型时嵌入模块权重(推荐方案)
    后续保存模型时,使用TensorFlow原生格式保存(不带.h5后缀),这样会将TF Hub模块的权重一并保存到模型目录中,避免依赖临时文件:

    # 保存模型
    model.save("trained_model", save_format="tf", include_optimizer=True)
    # 加载模型
    model = tf.keras.models.load_model("trained_model", custom_objects={'KerasLayer':hub.KerasLayer})
    
  • 指定固定的TF Hub缓存目录
    通过设置环境变量,将TF Hub模块缓存到自定义的固定目录,避免被系统自动清理:

    import os
    # 替换为你希望的固定缓存路径
    os.environ["TFHUB_CACHE_DIR"] = "D:/tfhub_modules_cache"
    

    之后加载模块和模型时,会优先从该固定目录读取模块文件。

内容的提问来源于stack exchange,提问作者Harshit Wadhwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:39:23