Pytorch 属性错误:';Conv3d&x27;对象没有属性';填充模式';

Pytorch 属性错误:';Conv3d&x27;对象没有属性';填充模式';,pytorch,onnx,Pytorch,Onnx,大家好,可能看到这个的人。我正在尝试将c3d模型转换为onnx,以用于一般用途 C3D列车代码取自: 因此,根据README.MD的要求,c3d模型的原始env为torch=0.4.0python=3.5.2 from network import C3D_model import torch import torch.onnx device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print("Devi

大家好,可能看到这个的人。我正在尝试将c3d模型转换为onnx,以用于一般用途

C3D列车代码取自:

因此,根据README.MD的要求,c3d模型的原始env为torch=0.4.0python=3.5.2

from network import C3D_model
import torch
import torch.onnx

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("Device being used:", device)


def test():

    model = C3D_model.C3D(num_classes=2)
    checkpoint = torch.load('C3D-ucf101_epoch-3.pth.tar',
                        map_location=lambda storage, loc: storage)
    model.load_state_dict(checkpoint['state_dict'])
    torch.save(model, 'c3d_thunder.pkl')
    dummy_input1 = torch.randn(1, 3, 16, 112, 112)
    torch.onnx.export(model, dummy_input1, "C3D.onnx", verbose=True)

if __name__ == "__main__":
    test()
起初,我试图在原始环境下转换此模型,但遇到以下错误:

Traceback (most recent call last):
  File "/workspace/pytorch-video-recognition/model2onnx.py", line 31, in <module>
    test()
  File "/workspace/pytorch-video-recognition/model2onnx.py", line 27, in test
    torch.onnx.export(model, dummy_input1, "C3D.onnx", verbose=True)
  File "/usr/local/lib/python3.5/dist-packages/torch/onnx/__init__.py", line 25, in export
    return utils.export(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/torch/onnx/utils.py", line 84, in export
    _export(model, args, f, export_params, verbose, training, input_names, output_names)
  File "/usr/local/lib/python3.5/dist-packages/torch/onnx/utils.py", line 154, in _export
    _onnx_opset_version, defer_weight_export)
RuntimeError: ONNX export failed: Couldn't export operator aten::max_pool3d
仍有错误:

Traceback (most recent call last):
  File "C:/Users/google/Desktop/onnx_test/t1.py", line 33, in <module>
    test()
  File "C:/Users/google/Desktop/onnx_test/t1.py", line 29, in test
    torch.onnx.export(model, dummy_input1, "C3D.onnx", verbose=True)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\__init__.py", line 25, in export
    return utils.export(*args, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 131, in export
    strip_doc_string=strip_doc_string)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 363, in _export
    _retain_param_name, do_constant_folding)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 266, in _model_to_graph
    graph, torch_out = _trace_and_get_graph_from_model(model, args, training)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 225, in _trace_and_get_graph_from_model
    trace, torch_out = torch.jit.get_trace_graph(model, args, _force_outplace=True)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\jit\__init__.py", line 231, in get_trace_graph
    return LegacyTracedModule(f, _force_outplace, return_inputs)(*args, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\jit\__init__.py", line 294, in forward
    out = self.inner(*trace_inputs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__
    result = self._slow_forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 481, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "C:\Users\google\Desktop\onnx_test\network\C3D_model.py", line 46, in forward
    x = self.relu(self.conv1(x))
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__
    result = self._slow_forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 481, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\conv.py", line 468, in forward
    if self.padding_mode == 'circular':
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 539, in __getattr__
    type(self).__name__, name))
AttributeError: 'Conv3d' object has no attribute 'padding_mode'
回溯(最近一次呼叫最后一次):
文件“C:/Users/google/Desktop/onnx_test/t1.py”,第33行,在
测试()
文件“C:/Users/google/Desktop/onnx_test/t1.py”,第29行,在测试中
torch.onnx.export(模型,虚拟输入1,“C3D.onnx”,verbose=True)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\onnx\\uuuuuu init\uuuuuu.py”,第25行,在导出中
返回utils.export(*args,**kwargs)
导出中的文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\onnx\utils.py”,第131行
条带文档字符串=条带文档字符串)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\onnx\utils.py”,第363行,在导出中
_保留参数名称,执行常数折叠)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\onnx\utils.py”,第266行,在模型图中
graph,torch_out=_trace_和_get_graph_from_model(model,args,training)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\onnx\utils.py”,第225行,在跟踪和从模型获取图形中
trace,torch\u out=torch.jit.get\u trace\u图(model,args,\u force\u outplace=True)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\jit\uuuu init\uuuu.py”,第231行,在get\u trace\u图中
返回LegacyTracedModule(f,力输出,返回输入)(*args,**kwargs)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第493行,在调用中__
结果=自我转发(*输入,**kwargs)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\jit\uuuu init\uuuu.py”,第294行,向前
输出=内部(*跟踪输入)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第491行,在调用中__
结果=self.\u slow\u forward(*输入,**kwargs)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第481行,慢速前进
结果=自我转发(*输入,**kwargs)
文件“C:\Users\google\Desktop\onnx\u test\network\C3D\u model.py”,第46行,向前
x=self.relu(self.conv1(x))
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第491行,在调用中__
结果=self.\u slow\u forward(*输入,**kwargs)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第481行,慢速前进
结果=自我转发(*输入,**kwargs)
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\conv.py”,第468行,向前
如果self.padding_mode==“循环”:
文件“D:\Anaconda3\envs\torch\u learn\lib\site packages\torch\nn\modules\module.py”,第539行,位于__
类型(自我)。\uuuuu名称(自我,名称))
AttributeError:“Conv3d”对象没有“padding\u mode”属性

有人能告诉我如何解决这个问题吗?谢谢你的时间~

您是否尝试过使用最新版本的PyTorch

您是否尝试过使用最新版本的PyTorch

你应该发布你的代码,不要复制图像,这样更容易理解。很抱歉,我已经更新了代码和错误内容。你应该发布代码,不要复制图像,这样更容易理解。很抱歉,我已经更新了代码和错误内容。
Traceback (most recent call last):
  File "C:/Users/google/Desktop/onnx_test/t1.py", line 33, in <module>
    test()
  File "C:/Users/google/Desktop/onnx_test/t1.py", line 29, in test
    torch.onnx.export(model, dummy_input1, "C3D.onnx", verbose=True)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\__init__.py", line 25, in export
    return utils.export(*args, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 131, in export
    strip_doc_string=strip_doc_string)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 363, in _export
    _retain_param_name, do_constant_folding)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 266, in _model_to_graph
    graph, torch_out = _trace_and_get_graph_from_model(model, args, training)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\onnx\utils.py", line 225, in _trace_and_get_graph_from_model
    trace, torch_out = torch.jit.get_trace_graph(model, args, _force_outplace=True)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\jit\__init__.py", line 231, in get_trace_graph
    return LegacyTracedModule(f, _force_outplace, return_inputs)(*args, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\jit\__init__.py", line 294, in forward
    out = self.inner(*trace_inputs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__
    result = self._slow_forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 481, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "C:\Users\google\Desktop\onnx_test\network\C3D_model.py", line 46, in forward
    x = self.relu(self.conv1(x))
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__
    result = self._slow_forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 481, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\conv.py", line 468, in forward
    if self.padding_mode == 'circular':
  File "D:\Anaconda3\envs\torch_learn\lib\site-packages\torch\nn\modules\module.py", line 539, in __getattr__
    type(self).__name__, name))
AttributeError: 'Conv3d' object has no attribute 'padding_mode'