问题背景
完整的报错为:
AttributeError: 'list' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.
初步断定是 torch.load
出了问题。
解决过程
通过 You can only torch.load from a file that is seekable
这句话可知torch只能load那些seekable的对象,而从 'list' object has no attribute 'seek'
可以看出列表是没有seek属性的,于是猜想 torch.load
中传入的参数是列表(一般是传字符串)而导致了这个报错。
为验证这个猜想,新开一个 .py
文件进行实验
import torch
a = torch.load([1, 2, 3])
print(a)
结果出现了一模一样的错误,说明我们的猜想正确。
翻看源码发现自己犯了一个很蠢的错误,如下
""" 仅仅是为了举例,并非和当时的情况完全一致 """
def read_file(path: str):
res = []
for _ in range(10):
path = torch.load(path)
res.append(path)
return res
第二次循环时会报错,因为此时 path
已经是列表了,要避免报错,仅需做出以下修改文章来源:https://www.toymoban.com/news/detail-607476.html
path_ = torch.load(path)
res.append(path_)
总结
尽量避免使用这种语句文章来源地址https://www.toymoban.com/news/detail-607476.html
a = torch.load(a)
到了这里,关于AttributeError: ‘list‘ object has no attribute ‘seek‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!