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

将Git仓库模型文件加载到tf.load_model()时出现错误如何解决?

问题原因

你触发报错的核心原因是repo.get_contents()返回的是PyGithub封装的ContentFile对象,不属于tf.keras.models.load_model()接受的字符串路径、字节类对象、路径类对象范畴,因此直接传入会触发类型错误。

两个问题的具体解答

1. 是否可以不使用本地路径,直接将拉取到的文件内容载入TensorFlow?

可以,仅需要满足一个前提:你存在GitHub上的模型是单文件H5格式的预训练模型。如果是多文件的SavedModel格式,因为包含变量文件夹、protobuf结构文件等多个依赖文件,无法通过单文件内容直接加载,必须落地到本地文件夹加载。

单文件H5格式直接加载的实现代码如下:

from credentials import *
from github import Github
import tensorflow as tf
import io

g = Github("你的访问令牌")
repos = g.get_user().get_repos()
target_repo_name = "你存储模型的仓库名"
target_model_path = "仓库内模型文件的路径,比如model/my_model.h5"

for repo in repos:
    if repo.name == target_repo_name:
        # 拉取模型文件内容
        model_content = repo.get_contents(target_model_path)
        # 把二进制内容包装为类文件对象传入load_model
        model = tf.keras.models.load_model(
            io.BytesIO(model_content.content),
            custom_objects=None,
            compile=True
        )
        # 后续可以直接使用model做预测
        break

2. 若需要使用本地路径加载,如何获取可用路径

如果是多文件的SavedModel格式,或者你需要持久化存储拉取到的模型,就需要把模型文件/文件夹落地到本地,再传入本地路径加载:

单文件H5格式落地加载示例

from credentials import *
from github import Github
import tensorflow as tf
import os

g = Github("你的访问令牌")
repos = g.get_user().get_repos()
target_repo_name = "你存储模型的仓库名"
target_model_path = "仓库内模型文件的路径,比如model/my_model.h5"
local_save_path = "./my_model.h5"

for repo in repos:
    if repo.name == target_repo_name:
        model_content = repo.get_contents(target_model_path)
        # 把二进制内容写入本地文件
        with open(local_save_path, "wb") as f:
            f.write(model_content.content)
        # 传入本地路径加载
        model = tf.keras.models.load_model(
            local_save_path,
            custom_objects=None,
            compile=True
        )
        break

SavedModel多文件格式落地加载说明

  • 先遍历仓库内对应模型文件夹下的所有文件,按照仓库内的目录结构,在本地创建相同层级的文件夹
  • 把所有文件的内容逐一写入本地对应路径
  • 传入本地的模型根文件夹路径给load_model()即可正常加载

内容的提问来源于stack exchange,提问作者gm tom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:57:03