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

Keras带命名层模型保存加载报错:AttributeError解决方法

Keras模型保存与加载报错:AttributeError: 'str' object has no attribute 'decode'

我构建了一个各层均指定名称的Keras模型,代码如下:

def build_model():
  input_layer = keras.Input(shape=input_shape, name='input')
  conv1 = layers.Conv2D(32, kernel_size=(3, 3), activation="relu", name='conv1')(input_layer)
  maxpool1 = layers.MaxPooling2D(pool_size=(2, 2), name='maxpool1')(conv1)
  conv2 = layers.Conv2D(64, kernel_size=(3, 3), activation="relu", name='conv2')(maxpool1)
  maxpool2 = layers.MaxPooling2D(pool_size=(2, 2), name='maxpool2')(conv2)
  flatten = layers.Flatten(name='flatten')(maxpool2)
  dropout = layers.Dropout(0.5, name='dropout')(flatten)
  dense = layers.Dense(num_classes, activation="softmax", name='dense')(dropout)
  return keras.Model(inputs=(input_layer,), outputs=(dense,))

model = build_model()
model.compile(...)
model.fit(...)

我希望完整保存该模型以便后续加载,保存加载代码如下:

model.save('path/model.h5')
new_model = tf.keras.models.load_model('path/model.h5')

但加载时出现如下错误:

>>> model = keras.models.load_model('model.h5')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/username/anaconda3/envs/enviromentname/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py", line 146, in load_model
    return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile)
  File "/Users/username/anaconda3/envs/enviromentname/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/hdf5_format.py", line 166, in load_model_from_hdf5
    model_config = json.loads(model_config.decode('utf-8'))
AttributeError: 'str' object has no attribute 'decode'

我尝试仅保存权重,仍出现相同错误:

>>> model.save_weights('path/model_weights.h5')
>>> model.load_weights('path/model_weights.h5')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/username/anaconda3/envs/enviromentname/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 181, in load_weights
    return super(Model, self).load_weights(filepath, by_name)
  File "/Users/username/anaconda3/envs/enviromentname/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/network.py", line 1177, in load_weights
    saving.load_weights_from_hdf5_group(f, self.layers)
  File "/Users/username/anaconda3/envs/enviromentname/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/hdf5_format.py", line 651, in load_weights_from_hdf5_group
    original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'

参考相关问题尝试降级h5py,但错误仍存在。该如何解决?


编辑: 按照建议,重新确认h5py的降级操作,并确保Google Colab与本地机器的Keras版本一致,使用h5py 2.10.0版本后问题解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:27