original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)AttributeError: ‘str‘ object has no(
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)AttributeError: ‘str‘ object has no(相关的知识,希望对你有一定的参考价值。
问题描述
在深度学习的VGG模型迁移学习案例中,进行模型预测分类时,加载.h5
模型,出现问题:
def predict(self, model):
"""
预测类别
:return:
"""
# 加载模型,transfer_model
model.load_weights("./ckpt/transfer_02-0.93.h5") # .encode('utf-8').decode('utf-8')
# 读取图片,处理
image = load_img('./data/test/dinosaurs/400.jpg', target_size=(224, 224))
image = img_to_array(image)
print(image.shape) # (224, 224, 3)
# 四维(224, 224, 3)--->(1, 224, 224, 3)
image = image.reshape([1, image.shape[0], image.shape[1], image.shape[2]])
# model.predict()
# 预测结果进行处理
image = preprocess_input(image)
predictions = model.predict(image)
print(predictions)
res = np.argmax(predictions, axis=1) # 第二个维度
print(self.label_dict[str(res[0])])
File"/home/liqiang/anaconda3/envs/tensorflow1.8/lib/python3.6/site-packages/keras/engine/saving.py", line 1004, in load_weights_from_hdf5_group original_keras_version = f.attrs['keras_version'].decode('utf8') AttributeError: 'str' object has no attribute 'decode'
问题原因:可能是h5py模块的版本过高,导致无法加载h5文件。
解决办法
卸载原来的h5py模块,安装2.10版本
pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/
参考:link
以上是关于original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)AttributeError: ‘str‘ object has no(的主要内容,如果未能解决你的问题,请参考以下文章