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(相关的知识,希望对你有一定的参考价值。

AttributeError: 'str' object has no attribute 'decode'

问题描述

深度学习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(的主要内容,如果未能解决你的问题,请参考以下文章