Pytorch加载模型时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 875:

Pytorch跨Python版本加载模型
本文解决Pytorch在不同Python版本间加载模型时遇到的UnicodeDecodeError问题,提供创建新Python2环境并重新安装Pytorch的解决方案。
部署运行你感兴趣的模型镜像

Pytorch加载模型时报错:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc3 in position 875: ordinal not in range(128)

问题原因:

Pytorch在加载模型时候,如果训练保存模型的python环境是2.7,然而在python3的环境中去load模型,就会出现上面的错误,

>>> import torch
>>> model = torch.load('../abcd.pth')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zhangboshen/anaconda3/lib/python3.6/site-packages/torch/serialization.py", line 358, in load
    return _load(f, map_location, pickle_module)
  File "/home/zhangboshen/anaconda3/lib/python3.6/site-packages/torch/serialization.py", line 529, in _load
    result = unpickler.load()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 875: ordinal not in range(128)

这个问题目前pytorch官方的API中貌似还无法解决,因为这是pickle在python2和3两种环境中保存文件的编码方式不一致导致的,然而 torch.load()方法并没有提供类似于data = pickle.load(f, encoding='latin1')这种可以设置encoding的方法。

所以,我的方法是conda create -n py27 python=2.7,也就创造一个新的python2的环境来load模型,当然了,pytorch也需要重新安装。。。

可能看起来有点笨重,但是it worked!

关于这个问题的一些讨论:
https://github.com/pytorch/pytorch/issues/5994
https://discuss.pytorch.org/t/error-while-loading-saved-model-post-update-of-pytorch/14369/5
https://github.com/pytorch/pytorch/commit/54d5c53826479142fcf1e4de3ad77f8e4b81c123

如果大家有更好的解决方法,也欢迎分享给我:)

BTW,创建新的python环境并且安装完pytorch后,import torch的时候我这里又出现了一个这样的错误:

>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zhangboshen/anaconda3/envs/py27/lib/python2.7/site-packages/torch/__init__.py", line 84, in <module>
    from torch._C import *
ImportError: numpy.core.multiarray failed to import

解决方法是重新安装numpy:

pip install numpy

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

这个报错"UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xc1 in position 0: invalid start byte"通常是由于文件编码错误引起的。根据引用中的信息,这个报错可能是由于在读取文件,使用的编码不正确导致的。建议检查文件的编码格式是否为UTF-8,如果不是,可以尝试将文件转换为正确的编码格式再进行读取。你可以使用Python的`open()`函数来指定正确的编码格式进行文件读取,例如`open(&#39;file.txt&#39;, encoding=&#39;gbk&#39;)`。如果你不确定文件的编码格式,可以尝试使用一些工具来检测文件的编码,例如chardet库。此外,还可以尝试使用其他的解码方式来解决这个问题,比如使用`latin1`或者`utf-16`等编码。希望这些方法能够帮助你解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2 in position 6: invalid start byte解决...](https://blog.csdn.net/weixin_51134564/article/details/126133880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 0: invalid start byte](https://blog.csdn.net/Ajdidfj/article/details/123522787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [pytorch报错:Process finished with exit code -1073741819 (0xC0000005)](https://download.csdn.net/download/weixin_38586942/13742773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值