米有点特多 2022-01-28 10:42 采纳率: 0%
浏览 235
已结题

导出torchscript过程中报错'method_descriptor' object has no attribute '__globals__'

使用博主@Tchunren 的方法来训练resnet网络以实现reid,训练完成后因为要部署到libtorch上,所以准备导出成torchscript。
网络代码来源:https://blog.csdn.net/t20134297/article/details/105519411
自己执行下面代码时

net.eval()
cpu_model = net.cpu()
traced_script_module = torch.jit.script(cpu_model(torch.rand(64, 3, 7, 7))) 
traced_script_module.save("resnet_model7.pt") 

第三句报错:
'method_descriptor' object has no attribute 'globals'


AttributeError                            Traceback (most recent call last)
/tmp/ipykernel_25840/1831791302.py in <module>
      1 for data in try_dataloader1:
      2     input, labels = data
----> 3     traced_script_module = torch.jit.script(cpu_model2(torch.rand(64, 3, 7, 7)))
      4     traced_script_module.save("traced_resnet_model7.pt")
      5     #traced_script_module = torch.jit.trace(cpu_model2,input)

~/anaconda3/lib/python3.9/site-packages/torch/jit/_script.py in script(obj, optimize, _frames_up, _rcb, example_inputs)
   1316         return fn
   1317     else:
-> 1318         return torch.jit._recursive.create_script_class(obj)
   1319 
   1320 

~/anaconda3/lib/python3.9/site-packages/torch/jit/_recursive.py in create_script_class(obj)
    415     """
    416     qualified_class_name = _jit_internal._qualified_name(type(obj))
--> 417     rcb = _jit_internal.createResolutionCallbackForClassMethods(type(obj))
    418     # Script the type of obj if it hasn't already been scripted.
    419     _compile_and_register_class(type(obj), rcb, qualified_class_name)

~/anaconda3/lib/python3.9/site-packages/torch/_jit_internal.py in createResolutionCallbackForClassMethods(cls)
    392 
    393     for fn in fns:
--> 394         captures.update(get_closure(fn))
    395         captures.update(get_type_hint_captures(fn))
    396 

~/anaconda3/lib/python3.9/site-packages/torch/_jit_internal.py in get_closure(fn)
    166     """
    167     captures = {}
--> 168     captures.update(fn.__globals__)
    169 
    170     for index, captured_name in enumerate(fn.__code__.co_freevars):

AttributeError: 'method_descriptor' object has no attribute '__globals__'

网上也没有问这个的,可以说毫无头绪了……

环境:
anaconda3+jupyternotebook
pytorch1.10.1
python3.9

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 2月5日
    • 创建了问题 1月28日

    悬赏问题

    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图
    • ¥15 stm32开发clion时遇到的编译问题