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

树莓派3加载Keras模型small_model.h5报错:TensorFlow无global_variables属性

解决树莓派3加载h5模型时的AttributeError: module 'tensorflow' has no attribute 'global_variables'问题

这个错误的核心原因是你保存的small_model.h5是基于TensorFlow 1.x版本的Keras生成的,但当前树莓派上安装的是TensorFlow 2.x版本——TF2.x已经移除了tensorflow.global_variables这个API(它被迁移到了tensorflow.compat.v1.global_variables),而旧模型加载时会调用这个已废弃的接口,导致报错。下面是一步步的解决方案:

方案1:使用TF2.x原生的加载方式

首先,放弃单独导入Keras的load_model,改用TensorFlow整合的tf.keras.models.load_model,这是TF2.x官方推荐的方式,能更好地兼容新旧模型:

import tensorflow as tf
# 直接用tf.keras的加载函数
small_model = tf.keras.models.load_model('small_model.h5')

方案2:开启TF1.x兼容模式加载

如果方案1还是报错,说明模型里有大量TF1.x专属的操作,需要临时切换到TF1.x的兼容环境:

import tensorflow as tf
# 关闭TF2.x的即时执行模式,模拟TF1.x运行环境
tf.compat.v1.disable_eager_execution()
# 使用兼容版的加载函数
small_model = tf.compat.v1.keras.models.load_model('small_model.h5')

方案3:修复TF与Keras的版本冲突

你提到升级过TF和Keras但无效,很可能是因为同时安装了独立的Keras包和TensorFlow自带的tf.keras,两者版本不匹配导致冲突。解决方法是卸载独立的Keras,只保留TF自带的版本:

  1. 卸载独立Keras:
pip uninstall keras -y
  1. 重新升级TensorFlow(确保安装树莓派兼容的版本,比如TF 2.15.x,这是支持ARM32的最后几个版本之一):
pip install --upgrade tensorflow
  1. 验证版本匹配:
import tensorflow as tf
print(f"TensorFlow版本: {tf.__version__}")
print(f"tf.keras版本: {tf.keras.__version__}")

两者版本号应该完全一致(比如都是2.15.0)。

方案4:转换模型为TF2.x支持的SavedModel格式

如果上述方法都无效,说明模型过于老旧,最好将它转换为TF2.x原生支持的SavedModel格式:

  1. 找一台装有TensorFlow 1.x的机器(或者用虚拟环境),加载模型并重新保存:
from keras.models import load_model
model = load_model('small_model.h5')
# 保存为SavedModel格式
model.save('small_model_savedmodel', save_format='tf')
  1. 将转换后的small_model_savedmodel文件夹传到树莓派,用TF2.x加载:
import tensorflow as tf
small_model = tf.keras.models.load_model('small_model_savedmodel')

另外要注意:你之前用h5py直接读取模型文件是没用的——h5py只能读取HDF5文件的原始数据结构,无法解析Keras模型的架构、权重和计算图,必须用Keras/TF官方的加载函数才行。

内容的提问来源于stack exchange,提问作者Karn Piriyapanya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:18:47