[DL课程作业本地化 解疑] load_model() 出现编码错误

1.问题:
在吴恩达第四课第三周作业 利用YOLO算法实现Detection中,需要导入预先训练好的模型,此时用到keras中的函数load_model(),运行时报出以下错误:

File "D:/Program Files/Anaconda3/envs/Tensorflow/Lib/site-packages/keras/utils/generic_utils.py", line 224, in func_load
    raw_code = codecs.decode(code.encode('ascii'), 'base64')

UnicodeEncodeError: 'ascii' codec can't encode character '\xe3' in position 0: ordinal not in range(128)

2.原因:
由于出现此问题前,博主曾在本地运行过该程序,未出现此问题,之后重新安装过keras,因此初步认定为keras版本导致此问题出现。
通过查看本地generic_utils.py 中的func_load()函数及GitHub-Keras/utlis/generic_utils.py
中对应函数,发现存在差异:
本地:

if closure is not None:
        closure = tuple(ensure_value_to_cell(_) for _ in closure)
raw_code = codecs.decode(code.encode('ascii'), 'base64')

code = marshal.loads(raw_code)

GitHub:

if closure is not None:
        closure = tuple(ensure_value_to_cell(_) for _ in closure)
try:
    raw_code = codecs.decode(code.encode('ascii'), 'base64')
except (UnicodeEncodeError, binascii.Error):
    # backwards compatibility for models serialized prior to 2.1.2
    raw_code = code.encode('raw_unicode_escape')

code = marshal.loads(raw_code)

3.解决方法
更改代码并在文件头加入

import binascii

问题解决。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值