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

Keras模型保存后加载报错:AttributeError: 'str'对象无'decode'属性

解决Keras加载模型时的AttributeError: 'str' object has no attribute 'decode'错误

问题原因

你的代码存在几个关键问题,结合环境版本兼容问题引发了该错误:

  • 保存模型时使用的文件名是model_test.h5,但加载时只写了model_test,缺少文件后缀导致路径匹配失败。
  • 混用了原生Keras和TensorFlow Keras的API:用原生Keras的model.save()保存,却用tf.keras.models.load_model()加载,部分版本下两者不兼容。
  • 旧版本h5py在Python 3环境下会错误地对字符串调用decode()方法(这是Python 2的语法),触发该异常。

修复方案

1. 修正文件名匹配

加载模型时使用完整的文件名,同时保持导入的load_model与保存时的API一致:

from keras.models import load_model
# 加载时使用完整的.h5文件名
new_model = load_model("model_test.h5")

2. 统一使用TensorFlow Keras API

如果你的环境依赖TensorFlow,建议全程使用tf.keras的API,避免混用:

# 替换所有导入为tf.keras
import numpy as np
import pandas as pd
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, GRU, Embedding
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
from tensorflow.keras.models import load_model

# 模型构建、编译、训练逻辑不变
model.save("model_test.h5")
# 用tf.keras的load_model加载
new_model = load_model("model_test.h5")

3. 更新h5py版本

如果上述方法无效,执行以下命令更新h5py,解决Python 3下的字符串处理兼容问题:

pip install --upgrade h5py

验证

完成上述操作后重新运行加载代码,若仍有问题,检查Python版本(推荐3.8+)和TensorFlow/Keras版本是否匹配(如TensorFlow 2.x对应Keras 2.x)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:40:49