Closed justinchuby closed 3 months ago
✅ Obtain model graph with `torch.export.export`
❌ Translate the graph into ONNX
⚪ Run `onnx.checker` on the ONNX model
⚪ Execute the model with ONNX Runtime
⚪ Validate model output accuracy
Error message:
Traceback (most recent call last):
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_core.py", line 490, in _add_nodes
_handle_call_function_node_with_lowering(
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_core.py", line 372, in _handle_call_function_node_with_lowering
raise RuntimeError(
RuntimeError: No ONNX function found for <OpOverload(op='aten.addmm', overload='default')>. Failure message: No decompositions registered for the real-valued input
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_patch.py", line 174, in _torch_onnx_export_adaptor
ir_model = torch_onnx.exported_program_to_ir(program)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_core.py", line 626, in exported_program_to_ir
values = _add_nodes(exported_program, model, lower=lower, registry=registry)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_core.py", line 501, in _add_nodes
raise RuntimeError(
RuntimeError: Error when translating node %addmm : [num_users=1] = call_function[target=torch.ops.aten.addmm.default](args = (%arg6_1, %view_1, %t), kwargs = {}). See the stack trace for more information.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_patch.py", line 230, in _torch_onnx_export_adapter_with_error_report
ir_model, program = _torch_onnx_export_adaptor(*args, **kwargs, check=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_patch.py", line 197, in _torch_onnx_export_adaptor
raise OnnxConversionError(
torch_onnx._patch.OnnxConversionError: Failed to convert the exported program to an ONNX model. [96mThis is step 2/2[0m of exporting the model to ONNX. Please create an issue in the PyTorch GitHub repository against the [96m*onnx*[0m component and attach the full error stack as well as reproduction scripts. You can run `torch_onnx.analyze()` to produce an error report after obtaining an ExportedProgram with `torch.export.export()`.
Exported program:
PyTorch ONNX Conversion Analysis
The model has 127398144 parameters and 0 buffers (non-trainable parameters). Number of parameters per dtype:
defaultdict(<class 'int'>, {torch.float32: 127398144})
Number of buffers per dtype:
defaultdict(<class 'int'>, {})
Inputs:
arg199_1
: TensorMetadata(shape=torch.Size([1, 12]), dtype=torch.int64, requires_grad=False, stride=(12, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
arg200_1
: TensorMetadata(shape=torch.Size([1, 12]), dtype=torch.int64, requires_grad=False, stride=(12, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
Outputs:
slice_2778
: TensorMetadata(shape=torch.Size([1, 12, 768]), dtype=torch.float32, requires_grad=False, stride=(393216, 768, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
tanh
: TensorMetadata(shape=torch.Size([1, 768]), dtype=torch.float32, requires_grad=False, stride=(768, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
The FX graph has 5064 nodes in total. Number of FX nodes per op:
placeholder
: 201call_function
: 4862output
: 1Of the call_function nodes, the counts of operators used are:
aten.slice.Tensor
: 1627aten.view.default
: 744aten.slice_scatter.default
: 528aten.transpose.int
: 420aten.unsqueeze.default
: 170aten.select.int
: 147aten.permute.default
: 144aten.copy.default
: 144aten.t.default
: 73aten.addmm.default
: 73aten._to_copy.default
: 64aten.clone.default
: 61aten.as_strided.default
: 60aten.constant_pad_nd.default
: 51aten.select_scatter.default
: 48aten.flip.default
: 48aten.expand.default
: 48aten.full_like.default
: 48aten.where.self
: 48aten.add.Tensor
: 39aten.new_ones.default
: 36aten.native_layer_norm.default
: 25<built-in function getitem>
: 25aten.bmm.default
: 24aten.new_zeros.default
: 24aten.tril.default
: 24aten.masked_fill.Scalar
: 24aten._unsafe_view.default
: 24aten.mul.Tensor
: 14aten.ne.Scalar
: 13aten.div.Tensor
: 12aten._softmax.default
: 12aten.gelu.default
: 12aten.embedding.default
: 3aten.zeros.default
: 1aten.rsub.Scalar
: 1aten.cumsum.default
: 1aten.lt.Scalar
: 1aten.tanh.default
: 1The model contains operators the dispatcher could not find registered ONNX decompositions for. This may be due to missing implementations, decompositions not registered correctly, or a bug in the dispatcher.
Errors grouped by operator:
aten.addmm.default
: No decompositions registered for the real-valued input. Example node: %addmm : [num_users=1] = call_function[target=torch.ops.aten.addmm.default](args = (%arg6_1, %view_1, %t), kwargs = {})
. All nodes: [addmm, addmm_1, addmm_2, addmm_3, addmm_4, addmm_5, addmm_6, addmm_7, addmm_8, addmm_9, addmm_10, addmm_11, addmm_12, addmm_13, addmm_14, addmm_15, addmm_16, addmm_17, addmm_18, addmm_19, addmm_20, addmm_21, addmm_22, addmm_23, addmm_24, addmm_25, addmm_26, addmm_27, addmm_28, addmm_29, addmm_30, addmm_31, addmm_32, addmm_33, addmm_34, addmm_35, addmm_36, addmm_37, addmm_38, addmm_39, addmm_40, addmm_41, addmm_42, addmm_43, addmm_44, addmm_45, addmm_46, addmm_47, addmm_48, addmm_49, addmm_50, addmm_51, addmm_52, addmm_53, addmm_54, addmm_55, addmm_56, addmm_57, addmm_58, addmm_59, addmm_60, addmm_61, addmm_62, addmm_63, addmm_64, addmm_65, addmm_66, addmm_67, addmm_68, addmm_69, addmm_70, addmm_71, addmm_72]
_ ._ __/__ _ _ _ _ _/_ Recorded: 10:45:15 Samples: 21751
/_//_/// /_\ / //_// / //_'/ // Duration: 23.412 CPU time: 27.537
/ _/ v4.6.2
Program: /Users/justinc/Documents/GitHub/torch-onnx/tests/longformer_export_api.py
23.411 _torch_onnx_export_adapter_with_error_report torch_onnx/_patch.py:210
└─ 23.411 _torch_onnx_export_adaptor torch_onnx/_patch.py:139
├─ 14.097 export torch/export/__init__.py:73
│ [345 frames hidden] torch, <string>, contextlib, importli...
└─ 9.314 exported_program_to_ir torch_onnx/_core.py:574
├─ 8.100 wrapper torch/export/exported_program.py:80
│ [102 frames hidden] torch, <string>
├─ 0.853 insert_type_promotion_nodes torch_onnx/_fx_passes.py:6
│ └─ 0.795 wrapper torch/onnx/_internal/diagnostics/infra/decorator.py:71
│ [14 frames hidden] torch
└─ 0.322 OnnxRegistry.from_torchlib torch_onnx/_registration.py:114
✅ Obtain model graph with `torch.export.export`
✅ Translate the graph into ONNX
❌ Run `onnx.checker` on the ONNX model
⚪ Execute the model with ONNX Runtime
⚪ Validate model output accuracy
Error message:
Traceback (most recent call last):
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_patch.py", line 287, in _torch_onnx_export_adapter_with_error_report
onnx.checker.check_model(f, full_check=True)
File "/Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/onnx/checker.py", line 163, in check_model
C.check_model_path(
onnx.onnx_cpp2py_export.shape_inference.InferenceError: [ShapeInferenceError] Inference error(s): (op_type:Conv, node name: node_Conv_26): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_28): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_40): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_42): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_55): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_57): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_69): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_71): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_84): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_86): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_98): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_100): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_111): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_113): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_126): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_128): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_140): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_142): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_155): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_157): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_169): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_171): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_182): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_184): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_197): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_199): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_211): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_213): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_226): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_228): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_240): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_242): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_253): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_255): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_268): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_270): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Conv, node name: node_Conv_282): [ShapeInferenceError] Attribute dilations has incorrect size
(op_type:Squeeze, node name: node_Squeeze_284): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:aten_addmm, node name: node_aten_addmm_294): [ShapeInferenceError] Inferred shape and existing shape differ in dimension 1: (512) vs (1000)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/justinc/Documents/GitHub/torch-onnx/src/torch_onnx/_patch.py", line 296, in _torch_onnx_export_adapter_with_error_report
raise OnnxCheckerError(
torch_onnx._patch.OnnxCheckerError: Conversion successful but the ONNX model fails ONNX checker. Please create an issue in the PyTorch GitHub repository against the [96m*onnx*[0m component and attach the full error stack as well as reproduction scripts.
Exported program:
ExportedProgram:
class GraphModule(torch.nn.Module):
def forward(self, arg0_1: "f32[64, 3, 7, 7]", arg1_1: "f32[64]", arg2_1: "f32[64]", arg3_1: "f32[64, 64, 3, 3]", arg4_1: "f32[64]", arg5_1: "f32[64]", arg6_1: "f32[64, 64, 3, 3]", arg7_1: "f32[64]", arg8_1: "f32[64]", arg9_1: "f32[64, 64, 3, 3]", arg10_1: "f32[64]", arg11_1: "f32[64]", arg12_1: "f32[64, 64, 3, 3]", arg13_1: "f32[64]", arg14_1: "f32[64]", arg15_1: "f32[128, 64, 3, 3]", arg16_1: "f32[128]", arg17_1: "f32[128]", arg18_1: "f32[128, 128, 3, 3]", arg19_1: "f32[128]", arg20_1: "f32[128]", arg21_1: "f32[128, 64, 1, 1]", arg22_1: "f32[128]", arg23_1: "f32[128]", arg24_1: "f32[128, 128, 3, 3]", arg25_1: "f32[128]", arg26_1: "f32[128]", arg27_1: "f32[128, 128, 3, 3]", arg28_1: "f32[128]", arg29_1: "f32[128]", arg30_1: "f32[256, 128, 3, 3]", arg31_1: "f32[256]", arg32_1: "f32[256]", arg33_1: "f32[256, 256, 3, 3]", arg34_1: "f32[256]", arg35_1: "f32[256]", arg36_1: "f32[256, 128, 1, 1]", arg37_1: "f32[256]", arg38_1: "f32[256]", arg39_1: "f32[256, 256, 3, 3]", arg40_1: "f32[256]", arg41_1: "f32[256]", arg42_1: "f32[256, 256, 3, 3]", arg43_1: "f32[256]", arg44_1: "f32[256]", arg45_1: "f32[512, 256, 3, 3]", arg46_1: "f32[512]", arg47_1: "f32[512]", arg48_1: "f32[512, 512, 3, 3]", arg49_1: "f32[512]", arg50_1: "f32[512]", arg51_1: "f32[512, 256, 1, 1]", arg52_1: "f32[512]", arg53_1: "f32[512]", arg54_1: "f32[512, 512, 3, 3]", arg55_1: "f32[512]", arg56_1: "f32[512]", arg57_1: "f32[512, 512, 3, 3]", arg58_1: "f32[512]", arg59_1: "f32[512]", arg60_1: "f32[1000, 512]", arg61_1: "f32[1000]", arg62_1: "f32[64]", arg63_1: "f32[64]", arg64_1: "i64[]", arg65_1: "f32[64]", arg66_1: "f32[64]", arg67_1: "i64[]", arg68_1: "f32[64]", arg69_1: "f32[64]", arg70_1: "i64[]", arg71_1: "f32[64]", arg72_1: "f32[64]", arg73_1: "i64[]", arg74_1: "f32[64]", arg75_1: "f32[64]", arg76_1: "i64[]", arg77_1: "f32[128]", arg78_1: "f32[128]", arg79_1: "i64[]", arg80_1: "f32[128]", arg81_1: "f32[128]", arg82_1: "i64[]", arg83_1: "f32[128]", arg84_1: "f32[128]", arg85_1: "i64[]", arg86_1: "f32[128]", arg87_1: "f32[128]", arg88_1: "i64[]", arg89_1: "f32[128]", arg90_1: "f32[128]", arg91_1: "i64[]", arg92_1: "f32[256]", arg93_1: "f32[256]", arg94_1: "i64[]", arg95_1: "f32[256]", arg96_1: "f32[256]", arg97_1: "i64[]", arg98_1: "f32[256]", arg99_1: "f32[256]", arg100_1: "i64[]", arg101_1: "f32[256]", arg102_1: "f32[256]", arg103_1: "i64[]", arg104_1: "f32[256]", arg105_1: "f32[256]", arg106_1: "i64[]", arg107_1: "f32[512]", arg108_1: "f32[512]", arg109_1: "i64[]", arg110_1: "f32[512]", arg111_1: "f32[512]", arg112_1: "i64[]", arg113_1: "f32[512]", arg114_1: "f32[512]", arg115_1: "i64[]", arg116_1: "f32[512]", arg117_1: "f32[512]", arg118_1: "i64[]", arg119_1: "f32[512]", arg120_1: "f32[512]", arg121_1: "i64[]", arg122_1: "f32[4, 3, 224, 224]"):
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:268 in _forward_impl, code: x = self.conv1(x)
convolution: "f32[4, 64, 112, 112]" = torch.ops.aten.convolution.default(arg122_1, arg0_1, None, [2, 2], [3, 3], [1, 1], False, [0, 0], 1); arg122_1 = arg0_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:269 in _forward_impl, code: x = self.bn1(x)
add: "i64[]" = torch.ops.aten.add.Tensor(arg64_1, 1); arg64_1 = None
_native_batch_norm_legit_functional = torch.ops.aten._native_batch_norm_legit_functional.default(convolution, arg1_1, arg2_1, arg62_1, arg63_1, True, 0.1, 1e-05); convolution = arg1_1 = arg2_1 = arg62_1 = arg63_1 = None
getitem: "f32[4, 64, 112, 112]" = _native_batch_norm_legit_functional[0]
getitem_3: "f32[64]" = _native_batch_norm_legit_functional[3]
getitem_4: "f32[64]" = _native_batch_norm_legit_functional[4]; _native_batch_norm_legit_functional = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:270 in _forward_impl, code: x = self.relu(x)
relu: "f32[4, 64, 112, 112]" = torch.ops.aten.relu.default(getitem); getitem = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:271 in _forward_impl, code: x = self.maxpool(x)
max_pool2d_with_indices = torch.ops.aten.max_pool2d_with_indices.default(relu, [3, 3], [2, 2], [1, 1]); relu = None
getitem_5: "f32[4, 64, 56, 56]" = max_pool2d_with_indices[0]; max_pool2d_with_indices = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_1: "f32[4, 64, 56, 56]" = torch.ops.aten.convolution.default(getitem_5, arg3_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); arg3_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_1: "i64[]" = torch.ops.aten.add.Tensor(arg67_1, 1); arg67_1 = None
_native_batch_norm_legit_functional_1 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_1, arg4_1, arg5_1, arg65_1, arg66_1, True, 0.1, 1e-05); convolution_1 = arg4_1 = arg5_1 = arg65_1 = arg66_1 = None
getitem_7: "f32[4, 64, 56, 56]" = _native_batch_norm_legit_functional_1[0]
getitem_10: "f32[64]" = _native_batch_norm_legit_functional_1[3]
getitem_11: "f32[64]" = _native_batch_norm_legit_functional_1[4]; _native_batch_norm_legit_functional_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_1: "f32[4, 64, 56, 56]" = torch.ops.aten.relu.default(getitem_7); getitem_7 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_2: "f32[4, 64, 56, 56]" = torch.ops.aten.convolution.default(relu_1, arg6_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_1 = arg6_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_2: "i64[]" = torch.ops.aten.add.Tensor(arg70_1, 1); arg70_1 = None
_native_batch_norm_legit_functional_2 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_2, arg7_1, arg8_1, arg68_1, arg69_1, True, 0.1, 1e-05); convolution_2 = arg7_1 = arg8_1 = arg68_1 = arg69_1 = None
getitem_12: "f32[4, 64, 56, 56]" = _native_batch_norm_legit_functional_2[0]
getitem_15: "f32[64]" = _native_batch_norm_legit_functional_2[3]
getitem_16: "f32[64]" = _native_batch_norm_legit_functional_2[4]; _native_batch_norm_legit_functional_2 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_3: "f32[4, 64, 56, 56]" = torch.ops.aten.add.Tensor(getitem_12, getitem_5); getitem_12 = getitem_5 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_2: "f32[4, 64, 56, 56]" = torch.ops.aten.relu.default(add_3); add_3 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_3: "f32[4, 64, 56, 56]" = torch.ops.aten.convolution.default(relu_2, arg9_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); arg9_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_4: "i64[]" = torch.ops.aten.add.Tensor(arg73_1, 1); arg73_1 = None
_native_batch_norm_legit_functional_3 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_3, arg10_1, arg11_1, arg71_1, arg72_1, True, 0.1, 1e-05); convolution_3 = arg10_1 = arg11_1 = arg71_1 = arg72_1 = None
getitem_17: "f32[4, 64, 56, 56]" = _native_batch_norm_legit_functional_3[0]
getitem_20: "f32[64]" = _native_batch_norm_legit_functional_3[3]
getitem_21: "f32[64]" = _native_batch_norm_legit_functional_3[4]; _native_batch_norm_legit_functional_3 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_3: "f32[4, 64, 56, 56]" = torch.ops.aten.relu.default(getitem_17); getitem_17 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_4: "f32[4, 64, 56, 56]" = torch.ops.aten.convolution.default(relu_3, arg12_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_3 = arg12_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_5: "i64[]" = torch.ops.aten.add.Tensor(arg76_1, 1); arg76_1 = None
_native_batch_norm_legit_functional_4 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_4, arg13_1, arg14_1, arg74_1, arg75_1, True, 0.1, 1e-05); convolution_4 = arg13_1 = arg14_1 = arg74_1 = arg75_1 = None
getitem_22: "f32[4, 64, 56, 56]" = _native_batch_norm_legit_functional_4[0]
getitem_25: "f32[64]" = _native_batch_norm_legit_functional_4[3]
getitem_26: "f32[64]" = _native_batch_norm_legit_functional_4[4]; _native_batch_norm_legit_functional_4 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_6: "f32[4, 64, 56, 56]" = torch.ops.aten.add.Tensor(getitem_22, relu_2); getitem_22 = relu_2 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_4: "f32[4, 64, 56, 56]" = torch.ops.aten.relu.default(add_6); add_6 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_5: "f32[4, 128, 28, 28]" = torch.ops.aten.convolution.default(relu_4, arg15_1, None, [2, 2], [1, 1], [1, 1], False, [0, 0], 1); arg15_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_7: "i64[]" = torch.ops.aten.add.Tensor(arg79_1, 1); arg79_1 = None
_native_batch_norm_legit_functional_5 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_5, arg16_1, arg17_1, arg77_1, arg78_1, True, 0.1, 1e-05); convolution_5 = arg16_1 = arg17_1 = arg77_1 = arg78_1 = None
getitem_27: "f32[4, 128, 28, 28]" = _native_batch_norm_legit_functional_5[0]
getitem_30: "f32[128]" = _native_batch_norm_legit_functional_5[3]
getitem_31: "f32[128]" = _native_batch_norm_legit_functional_5[4]; _native_batch_norm_legit_functional_5 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_5: "f32[4, 128, 28, 28]" = torch.ops.aten.relu.default(getitem_27); getitem_27 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_6: "f32[4, 128, 28, 28]" = torch.ops.aten.convolution.default(relu_5, arg18_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_5 = arg18_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_8: "i64[]" = torch.ops.aten.add.Tensor(arg82_1, 1); arg82_1 = None
_native_batch_norm_legit_functional_6 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_6, arg19_1, arg20_1, arg80_1, arg81_1, True, 0.1, 1e-05); convolution_6 = arg19_1 = arg20_1 = arg80_1 = arg81_1 = None
getitem_32: "f32[4, 128, 28, 28]" = _native_batch_norm_legit_functional_6[0]
getitem_35: "f32[128]" = _native_batch_norm_legit_functional_6[3]
getitem_36: "f32[128]" = _native_batch_norm_legit_functional_6[4]; _native_batch_norm_legit_functional_6 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:100 in forward, code: identity = self.downsample(x)
convolution_7: "f32[4, 128, 28, 28]" = torch.ops.aten.convolution.default(relu_4, arg21_1, None, [2, 2], [0, 0], [1, 1], False, [0, 0], 1); relu_4 = arg21_1 = None
add_9: "i64[]" = torch.ops.aten.add.Tensor(arg85_1, 1); arg85_1 = None
_native_batch_norm_legit_functional_7 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_7, arg22_1, arg23_1, arg83_1, arg84_1, True, 0.1, 1e-05); convolution_7 = arg22_1 = arg23_1 = arg83_1 = arg84_1 = None
getitem_37: "f32[4, 128, 28, 28]" = _native_batch_norm_legit_functional_7[0]
getitem_40: "f32[128]" = _native_batch_norm_legit_functional_7[3]
getitem_41: "f32[128]" = _native_batch_norm_legit_functional_7[4]; _native_batch_norm_legit_functional_7 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_10: "f32[4, 128, 28, 28]" = torch.ops.aten.add.Tensor(getitem_32, getitem_37); getitem_32 = getitem_37 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_6: "f32[4, 128, 28, 28]" = torch.ops.aten.relu.default(add_10); add_10 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_8: "f32[4, 128, 28, 28]" = torch.ops.aten.convolution.default(relu_6, arg24_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); arg24_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_11: "i64[]" = torch.ops.aten.add.Tensor(arg88_1, 1); arg88_1 = None
_native_batch_norm_legit_functional_8 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_8, arg25_1, arg26_1, arg86_1, arg87_1, True, 0.1, 1e-05); convolution_8 = arg25_1 = arg26_1 = arg86_1 = arg87_1 = None
getitem_42: "f32[4, 128, 28, 28]" = _native_batch_norm_legit_functional_8[0]
getitem_45: "f32[128]" = _native_batch_norm_legit_functional_8[3]
getitem_46: "f32[128]" = _native_batch_norm_legit_functional_8[4]; _native_batch_norm_legit_functional_8 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_7: "f32[4, 128, 28, 28]" = torch.ops.aten.relu.default(getitem_42); getitem_42 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_9: "f32[4, 128, 28, 28]" = torch.ops.aten.convolution.default(relu_7, arg27_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_7 = arg27_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_12: "i64[]" = torch.ops.aten.add.Tensor(arg91_1, 1); arg91_1 = None
_native_batch_norm_legit_functional_9 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_9, arg28_1, arg29_1, arg89_1, arg90_1, True, 0.1, 1e-05); convolution_9 = arg28_1 = arg29_1 = arg89_1 = arg90_1 = None
getitem_47: "f32[4, 128, 28, 28]" = _native_batch_norm_legit_functional_9[0]
getitem_50: "f32[128]" = _native_batch_norm_legit_functional_9[3]
getitem_51: "f32[128]" = _native_batch_norm_legit_functional_9[4]; _native_batch_norm_legit_functional_9 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_13: "f32[4, 128, 28, 28]" = torch.ops.aten.add.Tensor(getitem_47, relu_6); getitem_47 = relu_6 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_8: "f32[4, 128, 28, 28]" = torch.ops.aten.relu.default(add_13); add_13 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_10: "f32[4, 256, 14, 14]" = torch.ops.aten.convolution.default(relu_8, arg30_1, None, [2, 2], [1, 1], [1, 1], False, [0, 0], 1); arg30_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_14: "i64[]" = torch.ops.aten.add.Tensor(arg94_1, 1); arg94_1 = None
_native_batch_norm_legit_functional_10 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_10, arg31_1, arg32_1, arg92_1, arg93_1, True, 0.1, 1e-05); convolution_10 = arg31_1 = arg32_1 = arg92_1 = arg93_1 = None
getitem_52: "f32[4, 256, 14, 14]" = _native_batch_norm_legit_functional_10[0]
getitem_55: "f32[256]" = _native_batch_norm_legit_functional_10[3]
getitem_56: "f32[256]" = _native_batch_norm_legit_functional_10[4]; _native_batch_norm_legit_functional_10 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_9: "f32[4, 256, 14, 14]" = torch.ops.aten.relu.default(getitem_52); getitem_52 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_11: "f32[4, 256, 14, 14]" = torch.ops.aten.convolution.default(relu_9, arg33_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_9 = arg33_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_15: "i64[]" = torch.ops.aten.add.Tensor(arg97_1, 1); arg97_1 = None
_native_batch_norm_legit_functional_11 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_11, arg34_1, arg35_1, arg95_1, arg96_1, True, 0.1, 1e-05); convolution_11 = arg34_1 = arg35_1 = arg95_1 = arg96_1 = None
getitem_57: "f32[4, 256, 14, 14]" = _native_batch_norm_legit_functional_11[0]
getitem_60: "f32[256]" = _native_batch_norm_legit_functional_11[3]
getitem_61: "f32[256]" = _native_batch_norm_legit_functional_11[4]; _native_batch_norm_legit_functional_11 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:100 in forward, code: identity = self.downsample(x)
convolution_12: "f32[4, 256, 14, 14]" = torch.ops.aten.convolution.default(relu_8, arg36_1, None, [2, 2], [0, 0], [1, 1], False, [0, 0], 1); relu_8 = arg36_1 = None
add_16: "i64[]" = torch.ops.aten.add.Tensor(arg100_1, 1); arg100_1 = None
_native_batch_norm_legit_functional_12 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_12, arg37_1, arg38_1, arg98_1, arg99_1, True, 0.1, 1e-05); convolution_12 = arg37_1 = arg38_1 = arg98_1 = arg99_1 = None
getitem_62: "f32[4, 256, 14, 14]" = _native_batch_norm_legit_functional_12[0]
getitem_65: "f32[256]" = _native_batch_norm_legit_functional_12[3]
getitem_66: "f32[256]" = _native_batch_norm_legit_functional_12[4]; _native_batch_norm_legit_functional_12 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_17: "f32[4, 256, 14, 14]" = torch.ops.aten.add.Tensor(getitem_57, getitem_62); getitem_57 = getitem_62 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_10: "f32[4, 256, 14, 14]" = torch.ops.aten.relu.default(add_17); add_17 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_13: "f32[4, 256, 14, 14]" = torch.ops.aten.convolution.default(relu_10, arg39_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); arg39_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_18: "i64[]" = torch.ops.aten.add.Tensor(arg103_1, 1); arg103_1 = None
_native_batch_norm_legit_functional_13 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_13, arg40_1, arg41_1, arg101_1, arg102_1, True, 0.1, 1e-05); convolution_13 = arg40_1 = arg41_1 = arg101_1 = arg102_1 = None
getitem_67: "f32[4, 256, 14, 14]" = _native_batch_norm_legit_functional_13[0]
getitem_70: "f32[256]" = _native_batch_norm_legit_functional_13[3]
getitem_71: "f32[256]" = _native_batch_norm_legit_functional_13[4]; _native_batch_norm_legit_functional_13 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_11: "f32[4, 256, 14, 14]" = torch.ops.aten.relu.default(getitem_67); getitem_67 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_14: "f32[4, 256, 14, 14]" = torch.ops.aten.convolution.default(relu_11, arg42_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_11 = arg42_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_19: "i64[]" = torch.ops.aten.add.Tensor(arg106_1, 1); arg106_1 = None
_native_batch_norm_legit_functional_14 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_14, arg43_1, arg44_1, arg104_1, arg105_1, True, 0.1, 1e-05); convolution_14 = arg43_1 = arg44_1 = arg104_1 = arg105_1 = None
getitem_72: "f32[4, 256, 14, 14]" = _native_batch_norm_legit_functional_14[0]
getitem_75: "f32[256]" = _native_batch_norm_legit_functional_14[3]
getitem_76: "f32[256]" = _native_batch_norm_legit_functional_14[4]; _native_batch_norm_legit_functional_14 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_20: "f32[4, 256, 14, 14]" = torch.ops.aten.add.Tensor(getitem_72, relu_10); getitem_72 = relu_10 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_12: "f32[4, 256, 14, 14]" = torch.ops.aten.relu.default(add_20); add_20 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_15: "f32[4, 512, 7, 7]" = torch.ops.aten.convolution.default(relu_12, arg45_1, None, [2, 2], [1, 1], [1, 1], False, [0, 0], 1); arg45_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_21: "i64[]" = torch.ops.aten.add.Tensor(arg109_1, 1); arg109_1 = None
_native_batch_norm_legit_functional_15 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_15, arg46_1, arg47_1, arg107_1, arg108_1, True, 0.1, 1e-05); convolution_15 = arg46_1 = arg47_1 = arg107_1 = arg108_1 = None
getitem_77: "f32[4, 512, 7, 7]" = _native_batch_norm_legit_functional_15[0]
getitem_80: "f32[512]" = _native_batch_norm_legit_functional_15[3]
getitem_81: "f32[512]" = _native_batch_norm_legit_functional_15[4]; _native_batch_norm_legit_functional_15 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_13: "f32[4, 512, 7, 7]" = torch.ops.aten.relu.default(getitem_77); getitem_77 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_16: "f32[4, 512, 7, 7]" = torch.ops.aten.convolution.default(relu_13, arg48_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_13 = arg48_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_22: "i64[]" = torch.ops.aten.add.Tensor(arg112_1, 1); arg112_1 = None
_native_batch_norm_legit_functional_16 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_16, arg49_1, arg50_1, arg110_1, arg111_1, True, 0.1, 1e-05); convolution_16 = arg49_1 = arg50_1 = arg110_1 = arg111_1 = None
getitem_82: "f32[4, 512, 7, 7]" = _native_batch_norm_legit_functional_16[0]
getitem_85: "f32[512]" = _native_batch_norm_legit_functional_16[3]
getitem_86: "f32[512]" = _native_batch_norm_legit_functional_16[4]; _native_batch_norm_legit_functional_16 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:100 in forward, code: identity = self.downsample(x)
convolution_17: "f32[4, 512, 7, 7]" = torch.ops.aten.convolution.default(relu_12, arg51_1, None, [2, 2], [0, 0], [1, 1], False, [0, 0], 1); relu_12 = arg51_1 = None
add_23: "i64[]" = torch.ops.aten.add.Tensor(arg115_1, 1); arg115_1 = None
_native_batch_norm_legit_functional_17 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_17, arg52_1, arg53_1, arg113_1, arg114_1, True, 0.1, 1e-05); convolution_17 = arg52_1 = arg53_1 = arg113_1 = arg114_1 = None
getitem_87: "f32[4, 512, 7, 7]" = _native_batch_norm_legit_functional_17[0]
getitem_90: "f32[512]" = _native_batch_norm_legit_functional_17[3]
getitem_91: "f32[512]" = _native_batch_norm_legit_functional_17[4]; _native_batch_norm_legit_functional_17 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_24: "f32[4, 512, 7, 7]" = torch.ops.aten.add.Tensor(getitem_82, getitem_87); getitem_82 = getitem_87 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_14: "f32[4, 512, 7, 7]" = torch.ops.aten.relu.default(add_24); add_24 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:92 in forward, code: out = self.conv1(x)
convolution_18: "f32[4, 512, 7, 7]" = torch.ops.aten.convolution.default(relu_14, arg54_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); arg54_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:93 in forward, code: out = self.bn1(out)
add_25: "i64[]" = torch.ops.aten.add.Tensor(arg118_1, 1); arg118_1 = None
_native_batch_norm_legit_functional_18 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_18, arg55_1, arg56_1, arg116_1, arg117_1, True, 0.1, 1e-05); convolution_18 = arg55_1 = arg56_1 = arg116_1 = arg117_1 = None
getitem_92: "f32[4, 512, 7, 7]" = _native_batch_norm_legit_functional_18[0]
getitem_95: "f32[512]" = _native_batch_norm_legit_functional_18[3]
getitem_96: "f32[512]" = _native_batch_norm_legit_functional_18[4]; _native_batch_norm_legit_functional_18 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:94 in forward, code: out = self.relu(out)
relu_15: "f32[4, 512, 7, 7]" = torch.ops.aten.relu.default(getitem_92); getitem_92 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:96 in forward, code: out = self.conv2(out)
convolution_19: "f32[4, 512, 7, 7]" = torch.ops.aten.convolution.default(relu_15, arg57_1, None, [1, 1], [1, 1], [1, 1], False, [0, 0], 1); relu_15 = arg57_1 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:97 in forward, code: out = self.bn2(out)
add_26: "i64[]" = torch.ops.aten.add.Tensor(arg121_1, 1); arg121_1 = None
_native_batch_norm_legit_functional_19 = torch.ops.aten._native_batch_norm_legit_functional.default(convolution_19, arg58_1, arg59_1, arg119_1, arg120_1, True, 0.1, 1e-05); convolution_19 = arg58_1 = arg59_1 = arg119_1 = arg120_1 = None
getitem_97: "f32[4, 512, 7, 7]" = _native_batch_norm_legit_functional_19[0]
getitem_100: "f32[512]" = _native_batch_norm_legit_functional_19[3]
getitem_101: "f32[512]" = _native_batch_norm_legit_functional_19[4]; _native_batch_norm_legit_functional_19 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:102 in forward, code: out += identity
add_27: "f32[4, 512, 7, 7]" = torch.ops.aten.add.Tensor(getitem_97, relu_14); getitem_97 = relu_14 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:103 in forward, code: out = self.relu(out)
relu_16: "f32[4, 512, 7, 7]" = torch.ops.aten.relu.default(add_27); add_27 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:278 in _forward_impl, code: x = self.avgpool(x)
mean: "f32[4, 512, 1, 1]" = torch.ops.aten.mean.dim(relu_16, [-1, -2], True); relu_16 = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:279 in _forward_impl, code: x = torch.flatten(x, 1)
view: "f32[4, 512]" = torch.ops.aten.view.default(mean, [4, 512]); mean = None
# File: /Users/justinc/Documents/GitHub/torch-onnx/venv/lib/python3.11/site-packages/torchvision/models/resnet.py:280 in _forward_impl, code: x = self.fc(x)
t: "f32[512, 1000]" = torch.ops.aten.t.default(arg60_1); arg60_1 = None
addmm: "f32[4, 1000]" = torch.ops.aten.addmm.default(arg61_1, view, t); arg61_1 = view = t = None
return (getitem_3, getitem_4, add, getitem_10, getitem_11, add_1, getitem_15, getitem_16, add_2, getitem_20, getitem_21, add_4, getitem_25, getitem_26, add_5, getitem_30, getitem_31, add_7, getitem_35, getitem_36, add_8, getitem_40, getitem_41, add_9, getitem_45, getitem_46, add_11, getitem_50, getitem_51, add_12, getitem_55, getitem_56, add_14, getitem_60, getitem_61, add_15, getitem_65, getitem_66, add_16, getitem_70, getitem_71, add_18, getitem_75, getitem_76, add_19, getitem_80, getitem_81, add_21, getitem_85, getitem_86, add_22, getitem_90, getitem_91, add_23, getitem_95, getitem_96, add_25, getitem_100, getitem_101, add_26, addmm)
Graph signature: ExportGraphSignature(input_specs=[InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg0_1'), target='conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg1_1'), target='bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg2_1'), target='bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg3_1'), target='layer1.0.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg4_1'), target='layer1.0.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg5_1'), target='layer1.0.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg6_1'), target='layer1.0.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg7_1'), target='layer1.0.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg8_1'), target='layer1.0.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg9_1'), target='layer1.1.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg10_1'), target='layer1.1.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg11_1'), target='layer1.1.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg12_1'), target='layer1.1.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg13_1'), target='layer1.1.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg14_1'), target='layer1.1.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg15_1'), target='layer2.0.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg16_1'), target='layer2.0.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg17_1'), target='layer2.0.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg18_1'), target='layer2.0.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg19_1'), target='layer2.0.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg20_1'), target='layer2.0.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg21_1'), target='layer2.0.downsample.0.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg22_1'), target='layer2.0.downsample.1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg23_1'), target='layer2.0.downsample.1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg24_1'), target='layer2.1.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg25_1'), target='layer2.1.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg26_1'), target='layer2.1.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg27_1'), target='layer2.1.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg28_1'), target='layer2.1.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg29_1'), target='layer2.1.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg30_1'), target='layer3.0.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg31_1'), target='layer3.0.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg32_1'), target='layer3.0.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg33_1'), target='layer3.0.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg34_1'), target='layer3.0.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg35_1'), target='layer3.0.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg36_1'), target='layer3.0.downsample.0.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg37_1'), target='layer3.0.downsample.1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg38_1'), target='layer3.0.downsample.1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg39_1'), target='layer3.1.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg40_1'), target='layer3.1.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg41_1'), target='layer3.1.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg42_1'), target='layer3.1.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg43_1'), target='layer3.1.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg44_1'), target='layer3.1.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg45_1'), target='layer4.0.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg46_1'), target='layer4.0.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg47_1'), target='layer4.0.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg48_1'), target='layer4.0.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg49_1'), target='layer4.0.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg50_1'), target='layer4.0.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg51_1'), target='layer4.0.downsample.0.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg52_1'), target='layer4.0.downsample.1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg53_1'), target='layer4.0.downsample.1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg54_1'), target='layer4.1.conv1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg55_1'), target='layer4.1.bn1.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg56_1'), target='layer4.1.bn1.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg57_1'), target='layer4.1.conv2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg58_1'), target='layer4.1.bn2.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg59_1'), target='layer4.1.bn2.bias', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg60_1'), target='fc.weight', persistent=None), InputSpec(kind=<InputKind.PARAMETER: 2>, arg=TensorArgument(name='arg61_1'), target='fc.bias', persistent=None), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg62_1'), target='bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg63_1'), target='bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg64_1'), target='bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg65_1'), target='layer1.0.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg66_1'), target='layer1.0.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg67_1'), target='layer1.0.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg68_1'), target='layer1.0.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg69_1'), target='layer1.0.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg70_1'), target='layer1.0.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg71_1'), target='layer1.1.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg72_1'), target='layer1.1.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg73_1'), target='layer1.1.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg74_1'), target='layer1.1.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg75_1'), target='layer1.1.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg76_1'), target='layer1.1.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg77_1'), target='layer2.0.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg78_1'), target='layer2.0.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg79_1'), target='layer2.0.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg80_1'), target='layer2.0.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg81_1'), target='layer2.0.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg82_1'), target='layer2.0.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg83_1'), target='layer2.0.downsample.1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg84_1'), target='layer2.0.downsample.1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg85_1'), target='layer2.0.downsample.1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg86_1'), target='layer2.1.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg87_1'), target='layer2.1.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg88_1'), target='layer2.1.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg89_1'), target='layer2.1.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg90_1'), target='layer2.1.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg91_1'), target='layer2.1.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg92_1'), target='layer3.0.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg93_1'), target='layer3.0.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg94_1'), target='layer3.0.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg95_1'), target='layer3.0.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg96_1'), target='layer3.0.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg97_1'), target='layer3.0.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg98_1'), target='layer3.0.downsample.1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg99_1'), target='layer3.0.downsample.1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg100_1'), target='layer3.0.downsample.1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg101_1'), target='layer3.1.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg102_1'), target='layer3.1.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg103_1'), target='layer3.1.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg104_1'), target='layer3.1.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg105_1'), target='layer3.1.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg106_1'), target='layer3.1.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg107_1'), target='layer4.0.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg108_1'), target='layer4.0.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg109_1'), target='layer4.0.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg110_1'), target='layer4.0.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg111_1'), target='layer4.0.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg112_1'), target='layer4.0.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg113_1'), target='layer4.0.downsample.1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg114_1'), target='layer4.0.downsample.1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg115_1'), target='layer4.0.downsample.1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg116_1'), target='layer4.1.bn1.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg117_1'), target='layer4.1.bn1.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg118_1'), target='layer4.1.bn1.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg119_1'), target='layer4.1.bn2.running_mean', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg120_1'), target='layer4.1.bn2.running_var', persistent=True), InputSpec(kind=<InputKind.BUFFER: 3>, arg=TensorArgument(name='arg121_1'), target='layer4.1.bn2.num_batches_tracked', persistent=True), InputSpec(kind=<InputKind.USER_INPUT: 1>, arg=TensorArgument(name='arg122_1'), target=None, persistent=None)], output_specs=[OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_3'), target='bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_4'), target='bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add'), target='bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_10'), target='layer1.0.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_11'), target='layer1.0.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_1'), target='layer1.0.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_15'), target='layer1.0.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_16'), target='layer1.0.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_2'), target='layer1.0.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_20'), target='layer1.1.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_21'), target='layer1.1.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_4'), target='layer1.1.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_25'), target='layer1.1.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_26'), target='layer1.1.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_5'), target='layer1.1.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_30'), target='layer2.0.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_31'), target='layer2.0.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_7'), target='layer2.0.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_35'), target='layer2.0.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_36'), target='layer2.0.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_8'), target='layer2.0.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_40'), target='layer2.0.downsample.1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_41'), target='layer2.0.downsample.1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_9'), target='layer2.0.downsample.1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_45'), target='layer2.1.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_46'), target='layer2.1.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_11'), target='layer2.1.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_50'), target='layer2.1.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_51'), target='layer2.1.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_12'), target='layer2.1.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_55'), target='layer3.0.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_56'), target='layer3.0.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_14'), target='layer3.0.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_60'), target='layer3.0.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_61'), target='layer3.0.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_15'), target='layer3.0.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_65'), target='layer3.0.downsample.1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_66'), target='layer3.0.downsample.1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_16'), target='layer3.0.downsample.1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_70'), target='layer3.1.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_71'), target='layer3.1.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_18'), target='layer3.1.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_75'), target='layer3.1.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_76'), target='layer3.1.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_19'), target='layer3.1.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_80'), target='layer4.0.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_81'), target='layer4.0.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_21'), target='layer4.0.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_85'), target='layer4.0.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_86'), target='layer4.0.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_22'), target='layer4.0.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_90'), target='layer4.0.downsample.1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_91'), target='layer4.0.downsample.1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_23'), target='layer4.0.downsample.1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_95'), target='layer4.1.bn1.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_96'), target='layer4.1.bn1.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_25'), target='layer4.1.bn1.num_batches_tracked'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_100'), target='layer4.1.bn2.running_mean'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='getitem_101'), target='layer4.1.bn2.running_var'), OutputSpec(kind=<OutputKind.BUFFER_MUTATION: 3>, arg=TensorArgument(name='add_26'), target='layer4.1.bn2.num_batches_tracked'), OutputSpec(kind=<OutputKind.USER_OUTPUT: 1>, arg=TensorArgument(name='addmm'), target=None)])
Range constraints: {}
ONNX model:
<
ir_version=9,
opset_imports={'': 18, 'pkg.onnxscript.torch_lib': 1},
producer_name='torch',
producer_version='2.3.1',
domain=None,
model_version=None,
>
graph(
name=main_graph,
inputs=(
%"arg122_1"<FLOAT,[4,3,224,224]>,
%"conv1.weight"<FLOAT,[64,3,7,7]>,
%"bn1.weight"<FLOAT,[64]>,
%"bn1.bias"<FLOAT,[64]>,
%"layer1.0.conv1.weight"<FLOAT,[64,64,3,3]>,
%"layer1.0.bn1.weight"<FLOAT,[64]>,
%"layer1.0.bn1.bias"<FLOAT,[64]>,
%"layer1.0.conv2.weight"<FLOAT,[64,64,3,3]>,
%"layer1.0.bn2.weight"<FLOAT,[64]>,
%"layer1.0.bn2.bias"<FLOAT,[64]>,
%"layer1.1.conv1.weight"<FLOAT,[64,64,3,3]>,
%"layer1.1.bn1.weight"<FLOAT,[64]>,
%"layer1.1.bn1.bias"<FLOAT,[64]>,
%"layer1.1.conv2.weight"<FLOAT,[64,64,3,3]>,
%"layer1.1.bn2.weight"<FLOAT,[64]>,
%"layer1.1.bn2.bias"<FLOAT,[64]>,
%"layer2.0.conv1.weight"<FLOAT,[128,64,3,3]>,
%"layer2.0.bn1.weight"<FLOAT,[128]>,
%"layer2.0.bn1.bias"<FLOAT,[128]>,
%"layer2.0.conv2.weight"<FLOAT,[128,128,3,3]>,
%"layer2.0.bn2.weight"<FLOAT,[128]>,
%"layer2.0.bn2.bias"<FLOAT,[128]>,
%"layer2.0.downsample.0.weight"<FLOAT,[128,64,1,1]>,
%"layer2.0.downsample.1.weight"<FLOAT,[128]>,
%"layer2.0.downsample.1.bias"<FLOAT,[128]>,
%"layer2.1.conv1.weight"<FLOAT,[128,128,3,3]>,
%"layer2.1.bn1.weight"<FLOAT,[128]>,
%"layer2.1.bn1.bias"<FLOAT,[128]>,
%"layer2.1.conv2.weight"<FLOAT,[128,128,3,3]>,
%"layer2.1.bn2.weight"<FLOAT,[128]>,
%"layer2.1.bn2.bias"<FLOAT,[128]>,
%"layer3.0.conv1.weight"<FLOAT,[256,128,3,3]>,
%"layer3.0.bn1.weight"<FLOAT,[256]>,
%"layer3.0.bn1.bias"<FLOAT,[256]>,
%"layer3.0.conv2.weight"<FLOAT,[256,256,3,3]>,
%"layer3.0.bn2.weight"<FLOAT,[256]>,
%"layer3.0.bn2.bias"<FLOAT,[256]>,
%"layer3.0.downsample.0.weight"<FLOAT,[256,128,1,1]>,
%"layer3.0.downsample.1.weight"<FLOAT,[256]>,
%"layer3.0.downsample.1.bias"<FLOAT,[256]>,
%"layer3.1.conv1.weight"<FLOAT,[256,256,3,3]>,
%"layer3.1.bn1.weight"<FLOAT,[256]>,
%"layer3.1.bn1.bias"<FLOAT,[256]>,
%"layer3.1.conv2.weight"<FLOAT,[256,256,3,3]>,
%"layer3.1.bn2.weight"<FLOAT,[256]>,
%"layer3.1.bn2.bias"<FLOAT,[256]>,
%"layer4.0.conv1.weight"<FLOAT,[512,256,3,3]>,
%"layer4.0.bn1.weight"<FLOAT,[512]>,
%"layer4.0.bn1.bias"<FLOAT,[512]>,
%"layer4.0.conv2.weight"<FLOAT,[512,512,3,3]>,
%"layer4.0.bn2.weight"<FLOAT,[512]>,
%"layer4.0.bn2.bias"<FLOAT,[512]>,
%"layer4.0.downsample.0.weight"<FLOAT,[512,256,1,1]>,
%"layer4.0.downsample.1.weight"<FLOAT,[512]>,
%"layer4.0.downsample.1.bias"<FLOAT,[512]>,
%"layer4.1.conv1.weight"<FLOAT,[512,512,3,3]>,
%"layer4.1.bn1.weight"<FLOAT,[512]>,
%"layer4.1.bn1.bias"<FLOAT,[512]>,
%"layer4.1.conv2.weight"<FLOAT,[512,512,3,3]>,
%"layer4.1.bn2.weight"<FLOAT,[512]>,
%"layer4.1.bn2.bias"<FLOAT,[512]>,
%"fc.weight"<FLOAT,[1000,512]>,
%"fc.bias"<FLOAT,[1000]>,
%"bn1.running_mean"<FLOAT,[64]>,
%"bn1.running_var"<FLOAT,[64]>,
%"bn1.num_batches_tracked"<INT64,[]>,
%"layer1.0.bn1.running_mean"<FLOAT,[64]>,
%"layer1.0.bn1.running_var"<FLOAT,[64]>,
%"layer1.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer1.0.bn2.running_mean"<FLOAT,[64]>,
%"layer1.0.bn2.running_var"<FLOAT,[64]>,
%"layer1.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer1.1.bn1.running_mean"<FLOAT,[64]>,
%"layer1.1.bn1.running_var"<FLOAT,[64]>,
%"layer1.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer1.1.bn2.running_mean"<FLOAT,[64]>,
%"layer1.1.bn2.running_var"<FLOAT,[64]>,
%"layer1.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer2.0.bn1.running_mean"<FLOAT,[128]>,
%"layer2.0.bn1.running_var"<FLOAT,[128]>,
%"layer2.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer2.0.bn2.running_mean"<FLOAT,[128]>,
%"layer2.0.bn2.running_var"<FLOAT,[128]>,
%"layer2.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer2.0.downsample.1.running_mean"<FLOAT,[128]>,
%"layer2.0.downsample.1.running_var"<FLOAT,[128]>,
%"layer2.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer2.1.bn1.running_mean"<FLOAT,[128]>,
%"layer2.1.bn1.running_var"<FLOAT,[128]>,
%"layer2.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer2.1.bn2.running_mean"<FLOAT,[128]>,
%"layer2.1.bn2.running_var"<FLOAT,[128]>,
%"layer2.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer3.0.bn1.running_mean"<FLOAT,[256]>,
%"layer3.0.bn1.running_var"<FLOAT,[256]>,
%"layer3.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer3.0.bn2.running_mean"<FLOAT,[256]>,
%"layer3.0.bn2.running_var"<FLOAT,[256]>,
%"layer3.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer3.0.downsample.1.running_mean"<FLOAT,[256]>,
%"layer3.0.downsample.1.running_var"<FLOAT,[256]>,
%"layer3.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer3.1.bn1.running_mean"<FLOAT,[256]>,
%"layer3.1.bn1.running_var"<FLOAT,[256]>,
%"layer3.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer3.1.bn2.running_mean"<FLOAT,[256]>,
%"layer3.1.bn2.running_var"<FLOAT,[256]>,
%"layer3.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer4.0.bn1.running_mean"<FLOAT,[512]>,
%"layer4.0.bn1.running_var"<FLOAT,[512]>,
%"layer4.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer4.0.bn2.running_mean"<FLOAT,[512]>,
%"layer4.0.bn2.running_var"<FLOAT,[512]>,
%"layer4.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer4.0.downsample.1.running_mean"<FLOAT,[512]>,
%"layer4.0.downsample.1.running_var"<FLOAT,[512]>,
%"layer4.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer4.1.bn1.running_mean"<FLOAT,[512]>,
%"layer4.1.bn1.running_var"<FLOAT,[512]>,
%"layer4.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer4.1.bn2.running_mean"<FLOAT,[512]>,
%"layer4.1.bn2.running_var"<FLOAT,[512]>,
%"layer4.1.bn2.num_batches_tracked"<INT64,[]>
),
outputs=(
%"val_addmm"<FLOAT,[4,1000]>
),
initializers=(
%"conv1.weight"<FLOAT,[64,3,7,7]>,
%"bn1.weight"<FLOAT,[64]>,
%"bn1.bias"<FLOAT,[64]>,
%"layer1.0.conv1.weight"<FLOAT,[64,64,3,3]>,
%"layer1.0.bn1.weight"<FLOAT,[64]>,
%"layer1.0.bn1.bias"<FLOAT,[64]>,
%"layer1.0.conv2.weight"<FLOAT,[64,64,3,3]>,
%"layer1.0.bn2.weight"<FLOAT,[64]>,
%"layer1.0.bn2.bias"<FLOAT,[64]>,
%"layer1.1.conv1.weight"<FLOAT,[64,64,3,3]>,
%"layer1.1.bn1.weight"<FLOAT,[64]>,
%"layer1.1.bn1.bias"<FLOAT,[64]>,
%"layer1.1.conv2.weight"<FLOAT,[64,64,3,3]>,
%"layer1.1.bn2.weight"<FLOAT,[64]>,
%"layer1.1.bn2.bias"<FLOAT,[64]>,
%"layer2.0.conv1.weight"<FLOAT,[128,64,3,3]>,
%"layer2.0.bn1.weight"<FLOAT,[128]>,
%"layer2.0.bn1.bias"<FLOAT,[128]>,
%"layer2.0.conv2.weight"<FLOAT,[128,128,3,3]>,
%"layer2.0.bn2.weight"<FLOAT,[128]>,
%"layer2.0.bn2.bias"<FLOAT,[128]>,
%"layer2.0.downsample.0.weight"<FLOAT,[128,64,1,1]>,
%"layer2.0.downsample.1.weight"<FLOAT,[128]>,
%"layer2.0.downsample.1.bias"<FLOAT,[128]>,
%"layer2.1.conv1.weight"<FLOAT,[128,128,3,3]>,
%"layer2.1.bn1.weight"<FLOAT,[128]>,
%"layer2.1.bn1.bias"<FLOAT,[128]>,
%"layer2.1.conv2.weight"<FLOAT,[128,128,3,3]>,
%"layer2.1.bn2.weight"<FLOAT,[128]>,
%"layer2.1.bn2.bias"<FLOAT,[128]>,
%"layer3.0.conv1.weight"<FLOAT,[256,128,3,3]>,
%"layer3.0.bn1.weight"<FLOAT,[256]>,
%"layer3.0.bn1.bias"<FLOAT,[256]>,
%"layer3.0.conv2.weight"<FLOAT,[256,256,3,3]>,
%"layer3.0.bn2.weight"<FLOAT,[256]>,
%"layer3.0.bn2.bias"<FLOAT,[256]>,
%"layer3.0.downsample.0.weight"<FLOAT,[256,128,1,1]>,
%"layer3.0.downsample.1.weight"<FLOAT,[256]>,
%"layer3.0.downsample.1.bias"<FLOAT,[256]>,
%"layer3.1.conv1.weight"<FLOAT,[256,256,3,3]>,
%"layer3.1.bn1.weight"<FLOAT,[256]>,
%"layer3.1.bn1.bias"<FLOAT,[256]>,
%"layer3.1.conv2.weight"<FLOAT,[256,256,3,3]>,
%"layer3.1.bn2.weight"<FLOAT,[256]>,
%"layer3.1.bn2.bias"<FLOAT,[256]>,
%"layer4.0.conv1.weight"<FLOAT,[512,256,3,3]>,
%"layer4.0.bn1.weight"<FLOAT,[512]>,
%"layer4.0.bn1.bias"<FLOAT,[512]>,
%"layer4.0.conv2.weight"<FLOAT,[512,512,3,3]>,
%"layer4.0.bn2.weight"<FLOAT,[512]>,
%"layer4.0.bn2.bias"<FLOAT,[512]>,
%"layer4.0.downsample.0.weight"<FLOAT,[512,256,1,1]>,
%"layer4.0.downsample.1.weight"<FLOAT,[512]>,
%"layer4.0.downsample.1.bias"<FLOAT,[512]>,
%"layer4.1.conv1.weight"<FLOAT,[512,512,3,3]>,
%"layer4.1.bn1.weight"<FLOAT,[512]>,
%"layer4.1.bn1.bias"<FLOAT,[512]>,
%"layer4.1.conv2.weight"<FLOAT,[512,512,3,3]>,
%"layer4.1.bn2.weight"<FLOAT,[512]>,
%"layer4.1.bn2.bias"<FLOAT,[512]>,
%"fc.weight"<FLOAT,[1000,512]>,
%"fc.bias"<FLOAT,[1000]>,
%"bn1.running_mean"<FLOAT,[64]>,
%"bn1.running_var"<FLOAT,[64]>,
%"bn1.num_batches_tracked"<INT64,[]>,
%"layer1.0.bn1.running_mean"<FLOAT,[64]>,
%"layer1.0.bn1.running_var"<FLOAT,[64]>,
%"layer1.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer1.0.bn2.running_mean"<FLOAT,[64]>,
%"layer1.0.bn2.running_var"<FLOAT,[64]>,
%"layer1.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer1.1.bn1.running_mean"<FLOAT,[64]>,
%"layer1.1.bn1.running_var"<FLOAT,[64]>,
%"layer1.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer1.1.bn2.running_mean"<FLOAT,[64]>,
%"layer1.1.bn2.running_var"<FLOAT,[64]>,
%"layer1.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer2.0.bn1.running_mean"<FLOAT,[128]>,
%"layer2.0.bn1.running_var"<FLOAT,[128]>,
%"layer2.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer2.0.bn2.running_mean"<FLOAT,[128]>,
%"layer2.0.bn2.running_var"<FLOAT,[128]>,
%"layer2.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer2.0.downsample.1.running_mean"<FLOAT,[128]>,
%"layer2.0.downsample.1.running_var"<FLOAT,[128]>,
%"layer2.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer2.1.bn1.running_mean"<FLOAT,[128]>,
%"layer2.1.bn1.running_var"<FLOAT,[128]>,
%"layer2.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer2.1.bn2.running_mean"<FLOAT,[128]>,
%"layer2.1.bn2.running_var"<FLOAT,[128]>,
%"layer2.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer3.0.bn1.running_mean"<FLOAT,[256]>,
%"layer3.0.bn1.running_var"<FLOAT,[256]>,
%"layer3.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer3.0.bn2.running_mean"<FLOAT,[256]>,
%"layer3.0.bn2.running_var"<FLOAT,[256]>,
%"layer3.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer3.0.downsample.1.running_mean"<FLOAT,[256]>,
%"layer3.0.downsample.1.running_var"<FLOAT,[256]>,
%"layer3.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer3.1.bn1.running_mean"<FLOAT,[256]>,
%"layer3.1.bn1.running_var"<FLOAT,[256]>,
%"layer3.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer3.1.bn2.running_mean"<FLOAT,[256]>,
%"layer3.1.bn2.running_var"<FLOAT,[256]>,
%"layer3.1.bn2.num_batches_tracked"<INT64,[]>,
%"layer4.0.bn1.running_mean"<FLOAT,[512]>,
%"layer4.0.bn1.running_var"<FLOAT,[512]>,
%"layer4.0.bn1.num_batches_tracked"<INT64,[]>,
%"layer4.0.bn2.running_mean"<FLOAT,[512]>,
%"layer4.0.bn2.running_var"<FLOAT,[512]>,
%"layer4.0.bn2.num_batches_tracked"<INT64,[]>,
%"layer4.0.downsample.1.running_mean"<FLOAT,[512]>,
%"layer4.0.downsample.1.running_var"<FLOAT,[512]>,
%"layer4.0.downsample.1.num_batches_tracked"<INT64,[]>,
%"layer4.1.bn1.running_mean"<FLOAT,[512]>,
%"layer4.1.bn1.running_var"<FLOAT,[512]>,
%"layer4.1.bn1.num_batches_tracked"<INT64,[]>,
%"layer4.1.bn2.running_mean"<FLOAT,[512]>,
%"layer4.1.bn2.running_var"<FLOAT,[512]>,
%"layer4.1.bn2.num_batches_tracked"<INT64,[]>
),
) {
0 | # node_Shape_0
%"val_0"<?,?> ⬅️ ::Shape(%"conv1.weight") {end=1, start=0}
1 | # node_Constant_1
%"val_1"<?,?> ⬅️ ::Constant() {value_ints=[1]}
2 | # node_Expand_2
%"val_2"<?,?> ⬅️ ::Expand(%"val_0", %"val_1")
3 | # node_Constant_3
%"val_3"<?,?> ⬅️ ::Constant() {value=Tensor<FLOAT,[]>(array(0., dtype=float32), name=None)}
4 | # node_CastLike_4
%"val_4"<?,?> ⬅️ ::CastLike(%"val_3", %"arg122_1")
5 | # node_Expand_5
%"val_5"<?,?> ⬅️ ::Expand(%"val_4", %"val_2")
6 | # node_Conv_6
%"val_convolution"<FLOAT,[4,64,112,112]> ⬅️ ::Conv(%"arg122_1", %"conv1.weight", %"val_5") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[3, 3, 3, 3], strides=[2, 2]}
7 | # node_Constant_7
%"val_6"<?,?> ⬅️ ::Constant() {value=Tensor<INT64,[]>(array(1), name=None)}
8 | # node_aten_add_8
%"val_add"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"bn1.num_batches_tracked", %"val_6") {alpha=1.0}
9 | # node_Constant_9
%"val_7"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
10 | # node__aten_native_batch_norm_training_onnx_10
%"getitem"<FLOAT,[4,64,112,112]>, %"val__native_batch_norm_legit_functional__1"<FLOAT,[64]>, %"val__native_batch_norm_legit_functional__2"<FLOAT,[64]>, %"getitem_3"<FLOAT,[64]>, %"getitem_4"<FLOAT,[64]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution", %"bn1.weight", %"bn1.bias", %"bn1.running_mean", %"bn1.running_var", %"val_7") {momentum=0.9, eps=1e-05}
11 | # node_aten_relu_11
%"val_relu"<FLOAT,[4,64,112,112]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem")
12 | # node_MaxPool_12
%"getitem_5"<FLOAT,[4,64,56,56]>, %"val_8"<?,?> ⬅️ ::MaxPool(%"val_relu") {auto_pad=NOTSET, ceil_mode=False, dilations=[1, 1], kernel_shape=[3, 3], pads=[1, 1, 1, 1], storage_order=0, strides=[2, 2]}
13 | # node_MaxPool_13
%"val_9"<?,?>, %"val_10"<?,?> ⬅️ ::MaxPool(%"val_relu") {auto_pad=NOTSET, ceil_mode=0, dilations=[1, 1], kernel_shape=[1, 1], storage_order=0, strides=[1, 1]}
14 | # node_Constant_14
%"val_11"<?,?> ⬅️ ::Constant() {value_ints=[1, 1]}
15 | # node_Constant_15
%"val_12"<?,?> ⬅️ ::Constant() {value_ints=[0, 0]}
16 | # node_Constant_16
%"val_13"<?,?> ⬅️ ::Constant() {value_ints=[2, 3]}
17 | # node_Slice_17
%"val_14"<?,?> ⬅️ ::Slice(%"val_10", %"val_12", %"val_11", %"val_13", None)
18 | # node_Sub_18
%"val_max_pool2d_with_indices__1"<INT64,[4,64,56,56]> ⬅️ ::Sub(%"val_8", %"val_14")
19 | # node_Shape_19
%"val_15"<?,?> ⬅️ ::Shape(%"layer1.0.conv1.weight") {end=1, start=0}
20 | # node_Constant_20
%"val_16"<?,?> ⬅️ ::Constant() {value_ints=[1]}
21 | # node_Expand_21
%"val_17"<?,?> ⬅️ ::Expand(%"val_15", %"val_16")
22 | # node_CastLike_22
%"val_18"<?,?> ⬅️ ::CastLike(%"val_3", %"getitem_5")
23 | # node_Expand_23
%"val_19"<?,?> ⬅️ ::Expand(%"val_18", %"val_17")
24 | # node_Constant_24
%"val_20"<?,?> ⬅️ ::Constant() {value_ints=[0]}
25 | # node_Unsqueeze_25
%"val_21"<?,?> ⬅️ ::Unsqueeze(%"getitem_5", %"val_20")
26 | # node_Conv_26
%"val_22"<?,?> ⬅️ ::Conv(%"val_21", %"layer1.0.conv1.weight", %"val_19") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
27 | # node_Constant_27
%"val_23"<?,?> ⬅️ ::Constant() {value_ints=[0]}
28 | # node_Squeeze_28
%"val_convolution_1"<FLOAT,[4,64,56,56]> ⬅️ ::Squeeze(%"val_22", %"val_23")
29 | # node_aten_add_29
%"val_add_1"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer1.0.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
30 | # node_Constant_30
%"val_24"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
31 | # node__aten_native_batch_norm_training_onnx_31
%"getitem_7"<FLOAT,[4,64,56,56]>, %"val__native_batch_norm_legit_functional_1__1"<FLOAT,[64]>, %"val__native_batch_norm_legit_functional_1__2"<FLOAT,[64]>, %"getitem_10"<FLOAT,[64]>, %"getitem_11"<FLOAT,[64]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_1", %"layer1.0.bn1.weight", %"layer1.0.bn1.bias", %"layer1.0.bn1.running_mean", %"layer1.0.bn1.running_var", %"val_24") {momentum=0.9, eps=1e-05}
32 | # node_aten_relu_32
%"val_relu_1"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_7")
33 | # node_Shape_33
%"val_25"<?,?> ⬅️ ::Shape(%"layer1.0.conv2.weight") {end=1, start=0}
34 | # node_Constant_34
%"val_26"<?,?> ⬅️ ::Constant() {value_ints=[1]}
35 | # node_Expand_35
%"val_27"<?,?> ⬅️ ::Expand(%"val_25", %"val_26")
36 | # node_CastLike_36
%"val_28"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_1")
37 | # node_Expand_37
%"val_29"<?,?> ⬅️ ::Expand(%"val_28", %"val_27")
38 | # node_Constant_38
%"val_30"<?,?> ⬅️ ::Constant() {value_ints=[0]}
39 | # node_Unsqueeze_39
%"val_31"<?,?> ⬅️ ::Unsqueeze(%"val_relu_1", %"val_30")
40 | # node_Conv_40
%"val_32"<?,?> ⬅️ ::Conv(%"val_31", %"layer1.0.conv2.weight", %"val_29") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
41 | # node_Constant_41
%"val_33"<?,?> ⬅️ ::Constant() {value_ints=[0]}
42 | # node_Squeeze_42
%"val_convolution_2"<FLOAT,[4,64,56,56]> ⬅️ ::Squeeze(%"val_32", %"val_33")
43 | # node_aten_add_43
%"val_add_2"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer1.0.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
44 | # node_Constant_44
%"val_34"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
45 | # node__aten_native_batch_norm_training_onnx_45
%"getitem_12"<FLOAT,[4,64,56,56]>, %"val__native_batch_norm_legit_functional_2__1"<FLOAT,[64]>, %"val__native_batch_norm_legit_functional_2__2"<FLOAT,[64]>, %"getitem_15"<FLOAT,[64]>, %"getitem_16"<FLOAT,[64]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_2", %"layer1.0.bn2.weight", %"layer1.0.bn2.bias", %"layer1.0.bn2.running_mean", %"layer1.0.bn2.running_var", %"val_34") {momentum=0.9, eps=1e-05}
46 | # node_aten_add_46
%"val_add_3"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_12", %"getitem_5") {alpha=1.0}
47 | # node_aten_relu_47
%"val_relu_2"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_3")
48 | # node_Shape_48
%"val_35"<?,?> ⬅️ ::Shape(%"layer1.1.conv1.weight") {end=1, start=0}
49 | # node_Constant_49
%"val_36"<?,?> ⬅️ ::Constant() {value_ints=[1]}
50 | # node_Expand_50
%"val_37"<?,?> ⬅️ ::Expand(%"val_35", %"val_36")
51 | # node_CastLike_51
%"val_38"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_2")
52 | # node_Expand_52
%"val_39"<?,?> ⬅️ ::Expand(%"val_38", %"val_37")
53 | # node_Constant_53
%"val_40"<?,?> ⬅️ ::Constant() {value_ints=[0]}
54 | # node_Unsqueeze_54
%"val_41"<?,?> ⬅️ ::Unsqueeze(%"val_relu_2", %"val_40")
55 | # node_Conv_55
%"val_42"<?,?> ⬅️ ::Conv(%"val_41", %"layer1.1.conv1.weight", %"val_39") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
56 | # node_Constant_56
%"val_43"<?,?> ⬅️ ::Constant() {value_ints=[0]}
57 | # node_Squeeze_57
%"val_convolution_3"<FLOAT,[4,64,56,56]> ⬅️ ::Squeeze(%"val_42", %"val_43")
58 | # node_aten_add_58
%"val_add_4"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer1.1.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
59 | # node_Constant_59
%"val_44"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
60 | # node__aten_native_batch_norm_training_onnx_60
%"getitem_17"<FLOAT,[4,64,56,56]>, %"val__native_batch_norm_legit_functional_3__1"<FLOAT,[64]>, %"val__native_batch_norm_legit_functional_3__2"<FLOAT,[64]>, %"getitem_20"<FLOAT,[64]>, %"getitem_21"<FLOAT,[64]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_3", %"layer1.1.bn1.weight", %"layer1.1.bn1.bias", %"layer1.1.bn1.running_mean", %"layer1.1.bn1.running_var", %"val_44") {momentum=0.9, eps=1e-05}
61 | # node_aten_relu_61
%"val_relu_3"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_17")
62 | # node_Shape_62
%"val_45"<?,?> ⬅️ ::Shape(%"layer1.1.conv2.weight") {end=1, start=0}
63 | # node_Constant_63
%"val_46"<?,?> ⬅️ ::Constant() {value_ints=[1]}
64 | # node_Expand_64
%"val_47"<?,?> ⬅️ ::Expand(%"val_45", %"val_46")
65 | # node_CastLike_65
%"val_48"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_3")
66 | # node_Expand_66
%"val_49"<?,?> ⬅️ ::Expand(%"val_48", %"val_47")
67 | # node_Constant_67
%"val_50"<?,?> ⬅️ ::Constant() {value_ints=[0]}
68 | # node_Unsqueeze_68
%"val_51"<?,?> ⬅️ ::Unsqueeze(%"val_relu_3", %"val_50")
69 | # node_Conv_69
%"val_52"<?,?> ⬅️ ::Conv(%"val_51", %"layer1.1.conv2.weight", %"val_49") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
70 | # node_Constant_70
%"val_53"<?,?> ⬅️ ::Constant() {value_ints=[0]}
71 | # node_Squeeze_71
%"val_convolution_4"<FLOAT,[4,64,56,56]> ⬅️ ::Squeeze(%"val_52", %"val_53")
72 | # node_aten_add_72
%"val_add_5"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer1.1.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
73 | # node_Constant_73
%"val_54"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
74 | # node__aten_native_batch_norm_training_onnx_74
%"getitem_22"<FLOAT,[4,64,56,56]>, %"val__native_batch_norm_legit_functional_4__1"<FLOAT,[64]>, %"val__native_batch_norm_legit_functional_4__2"<FLOAT,[64]>, %"getitem_25"<FLOAT,[64]>, %"getitem_26"<FLOAT,[64]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_4", %"layer1.1.bn2.weight", %"layer1.1.bn2.bias", %"layer1.1.bn2.running_mean", %"layer1.1.bn2.running_var", %"val_54") {momentum=0.9, eps=1e-05}
75 | # node_aten_add_75
%"val_add_6"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_22", %"val_relu_2") {alpha=1.0}
76 | # node_aten_relu_76
%"val_relu_4"<FLOAT,[4,64,56,56]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_6")
77 | # node_Shape_77
%"val_55"<?,?> ⬅️ ::Shape(%"layer2.0.conv1.weight") {end=1, start=0}
78 | # node_Constant_78
%"val_56"<?,?> ⬅️ ::Constant() {value_ints=[1]}
79 | # node_Expand_79
%"val_57"<?,?> ⬅️ ::Expand(%"val_55", %"val_56")
80 | # node_CastLike_80
%"val_58"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_4")
81 | # node_Expand_81
%"val_59"<?,?> ⬅️ ::Expand(%"val_58", %"val_57")
82 | # node_Constant_82
%"val_60"<?,?> ⬅️ ::Constant() {value_ints=[0]}
83 | # node_Unsqueeze_83
%"val_61"<?,?> ⬅️ ::Unsqueeze(%"val_relu_4", %"val_60")
84 | # node_Conv_84
%"val_62"<?,?> ⬅️ ::Conv(%"val_61", %"layer2.0.conv1.weight", %"val_59") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[2, 2]}
85 | # node_Constant_85
%"val_63"<?,?> ⬅️ ::Constant() {value_ints=[0]}
86 | # node_Squeeze_86
%"val_convolution_5"<FLOAT,[4,128,28,28]> ⬅️ ::Squeeze(%"val_62", %"val_63")
87 | # node_aten_add_87
%"val_add_7"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer2.0.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
88 | # node_Constant_88
%"val_64"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
89 | # node__aten_native_batch_norm_training_onnx_89
%"getitem_27"<FLOAT,[4,128,28,28]>, %"val__native_batch_norm_legit_functional_5__1"<FLOAT,[128]>, %"val__native_batch_norm_legit_functional_5__2"<FLOAT,[128]>, %"getitem_30"<FLOAT,[128]>, %"getitem_31"<FLOAT,[128]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_5", %"layer2.0.bn1.weight", %"layer2.0.bn1.bias", %"layer2.0.bn1.running_mean", %"layer2.0.bn1.running_var", %"val_64") {momentum=0.9, eps=1e-05}
90 | # node_aten_relu_90
%"val_relu_5"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_27")
91 | # node_Shape_91
%"val_65"<?,?> ⬅️ ::Shape(%"layer2.0.conv2.weight") {end=1, start=0}
92 | # node_Constant_92
%"val_66"<?,?> ⬅️ ::Constant() {value_ints=[1]}
93 | # node_Expand_93
%"val_67"<?,?> ⬅️ ::Expand(%"val_65", %"val_66")
94 | # node_CastLike_94
%"val_68"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_5")
95 | # node_Expand_95
%"val_69"<?,?> ⬅️ ::Expand(%"val_68", %"val_67")
96 | # node_Constant_96
%"val_70"<?,?> ⬅️ ::Constant() {value_ints=[0]}
97 | # node_Unsqueeze_97
%"val_71"<?,?> ⬅️ ::Unsqueeze(%"val_relu_5", %"val_70")
98 | # node_Conv_98
%"val_72"<?,?> ⬅️ ::Conv(%"val_71", %"layer2.0.conv2.weight", %"val_69") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
99 | # node_Constant_99
%"val_73"<?,?> ⬅️ ::Constant() {value_ints=[0]}
100 | # node_Squeeze_100
%"val_convolution_6"<FLOAT,[4,128,28,28]> ⬅️ ::Squeeze(%"val_72", %"val_73")
101 | # node_aten_add_101
%"val_add_8"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer2.0.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
102 | # node_Constant_102
%"val_74"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
103 | # node__aten_native_batch_norm_training_onnx_103
%"getitem_32"<FLOAT,[4,128,28,28]>, %"val__native_batch_norm_legit_functional_6__1"<FLOAT,[128]>, %"val__native_batch_norm_legit_functional_6__2"<FLOAT,[128]>, %"getitem_35"<FLOAT,[128]>, %"getitem_36"<FLOAT,[128]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_6", %"layer2.0.bn2.weight", %"layer2.0.bn2.bias", %"layer2.0.bn2.running_mean", %"layer2.0.bn2.running_var", %"val_74") {momentum=0.9, eps=1e-05}
104 | # node_Shape_104
%"val_75"<?,?> ⬅️ ::Shape(%"layer2.0.downsample.0.weight") {end=1, start=0}
105 | # node_Constant_105
%"val_76"<?,?> ⬅️ ::Constant() {value_ints=[1]}
106 | # node_Expand_106
%"val_77"<?,?> ⬅️ ::Expand(%"val_75", %"val_76")
107 | # node_CastLike_107
%"val_78"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_4")
108 | # node_Expand_108
%"val_79"<?,?> ⬅️ ::Expand(%"val_78", %"val_77")
109 | # node_Constant_109
%"val_80"<?,?> ⬅️ ::Constant() {value_ints=[0]}
110 | # node_Unsqueeze_110
%"val_81"<?,?> ⬅️ ::Unsqueeze(%"val_relu_4", %"val_80")
111 | # node_Conv_111
%"val_82"<?,?> ⬅️ ::Conv(%"val_81", %"layer2.0.downsample.0.weight", %"val_79") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[0, 0, 0, 0], strides=[2, 2]}
112 | # node_Constant_112
%"val_83"<?,?> ⬅️ ::Constant() {value_ints=[0]}
113 | # node_Squeeze_113
%"val_convolution_7"<FLOAT,[4,128,28,28]> ⬅️ ::Squeeze(%"val_82", %"val_83")
114 | # node_aten_add_114
%"val_add_9"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer2.0.downsample.1.num_batches_tracked", %"val_6") {alpha=1.0}
115 | # node_Constant_115
%"val_84"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
116 | # node__aten_native_batch_norm_training_onnx_116
%"getitem_37"<FLOAT,[4,128,28,28]>, %"val__native_batch_norm_legit_functional_7__1"<FLOAT,[128]>, %"val__native_batch_norm_legit_functional_7__2"<FLOAT,[128]>, %"getitem_40"<FLOAT,[128]>, %"getitem_41"<FLOAT,[128]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_7", %"layer2.0.downsample.1.weight", %"layer2.0.downsample.1.bias", %"layer2.0.downsample.1.running_mean", %"layer2.0.downsample.1.running_var", %"val_84") {momentum=0.9, eps=1e-05}
117 | # node_aten_add_117
%"val_add_10"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_32", %"getitem_37") {alpha=1.0}
118 | # node_aten_relu_118
%"val_relu_6"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_10")
119 | # node_Shape_119
%"val_85"<?,?> ⬅️ ::Shape(%"layer2.1.conv1.weight") {end=1, start=0}
120 | # node_Constant_120
%"val_86"<?,?> ⬅️ ::Constant() {value_ints=[1]}
121 | # node_Expand_121
%"val_87"<?,?> ⬅️ ::Expand(%"val_85", %"val_86")
122 | # node_CastLike_122
%"val_88"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_6")
123 | # node_Expand_123
%"val_89"<?,?> ⬅️ ::Expand(%"val_88", %"val_87")
124 | # node_Constant_124
%"val_90"<?,?> ⬅️ ::Constant() {value_ints=[0]}
125 | # node_Unsqueeze_125
%"val_91"<?,?> ⬅️ ::Unsqueeze(%"val_relu_6", %"val_90")
126 | # node_Conv_126
%"val_92"<?,?> ⬅️ ::Conv(%"val_91", %"layer2.1.conv1.weight", %"val_89") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
127 | # node_Constant_127
%"val_93"<?,?> ⬅️ ::Constant() {value_ints=[0]}
128 | # node_Squeeze_128
%"val_convolution_8"<FLOAT,[4,128,28,28]> ⬅️ ::Squeeze(%"val_92", %"val_93")
129 | # node_aten_add_129
%"val_add_11"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer2.1.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
130 | # node_Constant_130
%"val_94"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
131 | # node__aten_native_batch_norm_training_onnx_131
%"getitem_42"<FLOAT,[4,128,28,28]>, %"val__native_batch_norm_legit_functional_8__1"<FLOAT,[128]>, %"val__native_batch_norm_legit_functional_8__2"<FLOAT,[128]>, %"getitem_45"<FLOAT,[128]>, %"getitem_46"<FLOAT,[128]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_8", %"layer2.1.bn1.weight", %"layer2.1.bn1.bias", %"layer2.1.bn1.running_mean", %"layer2.1.bn1.running_var", %"val_94") {momentum=0.9, eps=1e-05}
132 | # node_aten_relu_132
%"val_relu_7"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_42")
133 | # node_Shape_133
%"val_95"<?,?> ⬅️ ::Shape(%"layer2.1.conv2.weight") {end=1, start=0}
134 | # node_Constant_134
%"val_96"<?,?> ⬅️ ::Constant() {value_ints=[1]}
135 | # node_Expand_135
%"val_97"<?,?> ⬅️ ::Expand(%"val_95", %"val_96")
136 | # node_CastLike_136
%"val_98"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_7")
137 | # node_Expand_137
%"val_99"<?,?> ⬅️ ::Expand(%"val_98", %"val_97")
138 | # node_Constant_138
%"val_100"<?,?> ⬅️ ::Constant() {value_ints=[0]}
139 | # node_Unsqueeze_139
%"val_101"<?,?> ⬅️ ::Unsqueeze(%"val_relu_7", %"val_100")
140 | # node_Conv_140
%"val_102"<?,?> ⬅️ ::Conv(%"val_101", %"layer2.1.conv2.weight", %"val_99") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
141 | # node_Constant_141
%"val_103"<?,?> ⬅️ ::Constant() {value_ints=[0]}
142 | # node_Squeeze_142
%"val_convolution_9"<FLOAT,[4,128,28,28]> ⬅️ ::Squeeze(%"val_102", %"val_103")
143 | # node_aten_add_143
%"val_add_12"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer2.1.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
144 | # node_Constant_144
%"val_104"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
145 | # node__aten_native_batch_norm_training_onnx_145
%"getitem_47"<FLOAT,[4,128,28,28]>, %"val__native_batch_norm_legit_functional_9__1"<FLOAT,[128]>, %"val__native_batch_norm_legit_functional_9__2"<FLOAT,[128]>, %"getitem_50"<FLOAT,[128]>, %"getitem_51"<FLOAT,[128]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_9", %"layer2.1.bn2.weight", %"layer2.1.bn2.bias", %"layer2.1.bn2.running_mean", %"layer2.1.bn2.running_var", %"val_104") {momentum=0.9, eps=1e-05}
146 | # node_aten_add_146
%"val_add_13"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_47", %"val_relu_6") {alpha=1.0}
147 | # node_aten_relu_147
%"val_relu_8"<FLOAT,[4,128,28,28]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_13")
148 | # node_Shape_148
%"val_105"<?,?> ⬅️ ::Shape(%"layer3.0.conv1.weight") {end=1, start=0}
149 | # node_Constant_149
%"val_106"<?,?> ⬅️ ::Constant() {value_ints=[1]}
150 | # node_Expand_150
%"val_107"<?,?> ⬅️ ::Expand(%"val_105", %"val_106")
151 | # node_CastLike_151
%"val_108"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_8")
152 | # node_Expand_152
%"val_109"<?,?> ⬅️ ::Expand(%"val_108", %"val_107")
153 | # node_Constant_153
%"val_110"<?,?> ⬅️ ::Constant() {value_ints=[0]}
154 | # node_Unsqueeze_154
%"val_111"<?,?> ⬅️ ::Unsqueeze(%"val_relu_8", %"val_110")
155 | # node_Conv_155
%"val_112"<?,?> ⬅️ ::Conv(%"val_111", %"layer3.0.conv1.weight", %"val_109") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[2, 2]}
156 | # node_Constant_156
%"val_113"<?,?> ⬅️ ::Constant() {value_ints=[0]}
157 | # node_Squeeze_157
%"val_convolution_10"<FLOAT,[4,256,14,14]> ⬅️ ::Squeeze(%"val_112", %"val_113")
158 | # node_aten_add_158
%"val_add_14"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer3.0.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
159 | # node_Constant_159
%"val_114"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
160 | # node__aten_native_batch_norm_training_onnx_160
%"getitem_52"<FLOAT,[4,256,14,14]>, %"val__native_batch_norm_legit_functional_10__1"<FLOAT,[256]>, %"val__native_batch_norm_legit_functional_10__2"<FLOAT,[256]>, %"getitem_55"<FLOAT,[256]>, %"getitem_56"<FLOAT,[256]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_10", %"layer3.0.bn1.weight", %"layer3.0.bn1.bias", %"layer3.0.bn1.running_mean", %"layer3.0.bn1.running_var", %"val_114") {momentum=0.9, eps=1e-05}
161 | # node_aten_relu_161
%"val_relu_9"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_52")
162 | # node_Shape_162
%"val_115"<?,?> ⬅️ ::Shape(%"layer3.0.conv2.weight") {end=1, start=0}
163 | # node_Constant_163
%"val_116"<?,?> ⬅️ ::Constant() {value_ints=[1]}
164 | # node_Expand_164
%"val_117"<?,?> ⬅️ ::Expand(%"val_115", %"val_116")
165 | # node_CastLike_165
%"val_118"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_9")
166 | # node_Expand_166
%"val_119"<?,?> ⬅️ ::Expand(%"val_118", %"val_117")
167 | # node_Constant_167
%"val_120"<?,?> ⬅️ ::Constant() {value_ints=[0]}
168 | # node_Unsqueeze_168
%"val_121"<?,?> ⬅️ ::Unsqueeze(%"val_relu_9", %"val_120")
169 | # node_Conv_169
%"val_122"<?,?> ⬅️ ::Conv(%"val_121", %"layer3.0.conv2.weight", %"val_119") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
170 | # node_Constant_170
%"val_123"<?,?> ⬅️ ::Constant() {value_ints=[0]}
171 | # node_Squeeze_171
%"val_convolution_11"<FLOAT,[4,256,14,14]> ⬅️ ::Squeeze(%"val_122", %"val_123")
172 | # node_aten_add_172
%"val_add_15"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer3.0.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
173 | # node_Constant_173
%"val_124"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
174 | # node__aten_native_batch_norm_training_onnx_174
%"getitem_57"<FLOAT,[4,256,14,14]>, %"val__native_batch_norm_legit_functional_11__1"<FLOAT,[256]>, %"val__native_batch_norm_legit_functional_11__2"<FLOAT,[256]>, %"getitem_60"<FLOAT,[256]>, %"getitem_61"<FLOAT,[256]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_11", %"layer3.0.bn2.weight", %"layer3.0.bn2.bias", %"layer3.0.bn2.running_mean", %"layer3.0.bn2.running_var", %"val_124") {momentum=0.9, eps=1e-05}
175 | # node_Shape_175
%"val_125"<?,?> ⬅️ ::Shape(%"layer3.0.downsample.0.weight") {end=1, start=0}
176 | # node_Constant_176
%"val_126"<?,?> ⬅️ ::Constant() {value_ints=[1]}
177 | # node_Expand_177
%"val_127"<?,?> ⬅️ ::Expand(%"val_125", %"val_126")
178 | # node_CastLike_178
%"val_128"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_8")
179 | # node_Expand_179
%"val_129"<?,?> ⬅️ ::Expand(%"val_128", %"val_127")
180 | # node_Constant_180
%"val_130"<?,?> ⬅️ ::Constant() {value_ints=[0]}
181 | # node_Unsqueeze_181
%"val_131"<?,?> ⬅️ ::Unsqueeze(%"val_relu_8", %"val_130")
182 | # node_Conv_182
%"val_132"<?,?> ⬅️ ::Conv(%"val_131", %"layer3.0.downsample.0.weight", %"val_129") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[0, 0, 0, 0], strides=[2, 2]}
183 | # node_Constant_183
%"val_133"<?,?> ⬅️ ::Constant() {value_ints=[0]}
184 | # node_Squeeze_184
%"val_convolution_12"<FLOAT,[4,256,14,14]> ⬅️ ::Squeeze(%"val_132", %"val_133")
185 | # node_aten_add_185
%"val_add_16"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer3.0.downsample.1.num_batches_tracked", %"val_6") {alpha=1.0}
186 | # node_Constant_186
%"val_134"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
187 | # node__aten_native_batch_norm_training_onnx_187
%"getitem_62"<FLOAT,[4,256,14,14]>, %"val__native_batch_norm_legit_functional_12__1"<FLOAT,[256]>, %"val__native_batch_norm_legit_functional_12__2"<FLOAT,[256]>, %"getitem_65"<FLOAT,[256]>, %"getitem_66"<FLOAT,[256]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_12", %"layer3.0.downsample.1.weight", %"layer3.0.downsample.1.bias", %"layer3.0.downsample.1.running_mean", %"layer3.0.downsample.1.running_var", %"val_134") {momentum=0.9, eps=1e-05}
188 | # node_aten_add_188
%"val_add_17"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_57", %"getitem_62") {alpha=1.0}
189 | # node_aten_relu_189
%"val_relu_10"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_17")
190 | # node_Shape_190
%"val_135"<?,?> ⬅️ ::Shape(%"layer3.1.conv1.weight") {end=1, start=0}
191 | # node_Constant_191
%"val_136"<?,?> ⬅️ ::Constant() {value_ints=[1]}
192 | # node_Expand_192
%"val_137"<?,?> ⬅️ ::Expand(%"val_135", %"val_136")
193 | # node_CastLike_193
%"val_138"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_10")
194 | # node_Expand_194
%"val_139"<?,?> ⬅️ ::Expand(%"val_138", %"val_137")
195 | # node_Constant_195
%"val_140"<?,?> ⬅️ ::Constant() {value_ints=[0]}
196 | # node_Unsqueeze_196
%"val_141"<?,?> ⬅️ ::Unsqueeze(%"val_relu_10", %"val_140")
197 | # node_Conv_197
%"val_142"<?,?> ⬅️ ::Conv(%"val_141", %"layer3.1.conv1.weight", %"val_139") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
198 | # node_Constant_198
%"val_143"<?,?> ⬅️ ::Constant() {value_ints=[0]}
199 | # node_Squeeze_199
%"val_convolution_13"<FLOAT,[4,256,14,14]> ⬅️ ::Squeeze(%"val_142", %"val_143")
200 | # node_aten_add_200
%"val_add_18"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer3.1.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
201 | # node_Constant_201
%"val_144"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
202 | # node__aten_native_batch_norm_training_onnx_202
%"getitem_67"<FLOAT,[4,256,14,14]>, %"val__native_batch_norm_legit_functional_13__1"<FLOAT,[256]>, %"val__native_batch_norm_legit_functional_13__2"<FLOAT,[256]>, %"getitem_70"<FLOAT,[256]>, %"getitem_71"<FLOAT,[256]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_13", %"layer3.1.bn1.weight", %"layer3.1.bn1.bias", %"layer3.1.bn1.running_mean", %"layer3.1.bn1.running_var", %"val_144") {momentum=0.9, eps=1e-05}
203 | # node_aten_relu_203
%"val_relu_11"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_67")
204 | # node_Shape_204
%"val_145"<?,?> ⬅️ ::Shape(%"layer3.1.conv2.weight") {end=1, start=0}
205 | # node_Constant_205
%"val_146"<?,?> ⬅️ ::Constant() {value_ints=[1]}
206 | # node_Expand_206
%"val_147"<?,?> ⬅️ ::Expand(%"val_145", %"val_146")
207 | # node_CastLike_207
%"val_148"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_11")
208 | # node_Expand_208
%"val_149"<?,?> ⬅️ ::Expand(%"val_148", %"val_147")
209 | # node_Constant_209
%"val_150"<?,?> ⬅️ ::Constant() {value_ints=[0]}
210 | # node_Unsqueeze_210
%"val_151"<?,?> ⬅️ ::Unsqueeze(%"val_relu_11", %"val_150")
211 | # node_Conv_211
%"val_152"<?,?> ⬅️ ::Conv(%"val_151", %"layer3.1.conv2.weight", %"val_149") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
212 | # node_Constant_212
%"val_153"<?,?> ⬅️ ::Constant() {value_ints=[0]}
213 | # node_Squeeze_213
%"val_convolution_14"<FLOAT,[4,256,14,14]> ⬅️ ::Squeeze(%"val_152", %"val_153")
214 | # node_aten_add_214
%"val_add_19"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer3.1.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
215 | # node_Constant_215
%"val_154"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
216 | # node__aten_native_batch_norm_training_onnx_216
%"getitem_72"<FLOAT,[4,256,14,14]>, %"val__native_batch_norm_legit_functional_14__1"<FLOAT,[256]>, %"val__native_batch_norm_legit_functional_14__2"<FLOAT,[256]>, %"getitem_75"<FLOAT,[256]>, %"getitem_76"<FLOAT,[256]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_14", %"layer3.1.bn2.weight", %"layer3.1.bn2.bias", %"layer3.1.bn2.running_mean", %"layer3.1.bn2.running_var", %"val_154") {momentum=0.9, eps=1e-05}
217 | # node_aten_add_217
%"val_add_20"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_72", %"val_relu_10") {alpha=1.0}
218 | # node_aten_relu_218
%"val_relu_12"<FLOAT,[4,256,14,14]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_20")
219 | # node_Shape_219
%"val_155"<?,?> ⬅️ ::Shape(%"layer4.0.conv1.weight") {end=1, start=0}
220 | # node_Constant_220
%"val_156"<?,?> ⬅️ ::Constant() {value_ints=[1]}
221 | # node_Expand_221
%"val_157"<?,?> ⬅️ ::Expand(%"val_155", %"val_156")
222 | # node_CastLike_222
%"val_158"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_12")
223 | # node_Expand_223
%"val_159"<?,?> ⬅️ ::Expand(%"val_158", %"val_157")
224 | # node_Constant_224
%"val_160"<?,?> ⬅️ ::Constant() {value_ints=[0]}
225 | # node_Unsqueeze_225
%"val_161"<?,?> ⬅️ ::Unsqueeze(%"val_relu_12", %"val_160")
226 | # node_Conv_226
%"val_162"<?,?> ⬅️ ::Conv(%"val_161", %"layer4.0.conv1.weight", %"val_159") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[2, 2]}
227 | # node_Constant_227
%"val_163"<?,?> ⬅️ ::Constant() {value_ints=[0]}
228 | # node_Squeeze_228
%"val_convolution_15"<FLOAT,[4,512,7,7]> ⬅️ ::Squeeze(%"val_162", %"val_163")
229 | # node_aten_add_229
%"val_add_21"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer4.0.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
230 | # node_Constant_230
%"val_164"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
231 | # node__aten_native_batch_norm_training_onnx_231
%"getitem_77"<FLOAT,[4,512,7,7]>, %"val__native_batch_norm_legit_functional_15__1"<FLOAT,[512]>, %"val__native_batch_norm_legit_functional_15__2"<FLOAT,[512]>, %"getitem_80"<FLOAT,[512]>, %"getitem_81"<FLOAT,[512]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_15", %"layer4.0.bn1.weight", %"layer4.0.bn1.bias", %"layer4.0.bn1.running_mean", %"layer4.0.bn1.running_var", %"val_164") {momentum=0.9, eps=1e-05}
232 | # node_aten_relu_232
%"val_relu_13"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_77")
233 | # node_Shape_233
%"val_165"<?,?> ⬅️ ::Shape(%"layer4.0.conv2.weight") {end=1, start=0}
234 | # node_Constant_234
%"val_166"<?,?> ⬅️ ::Constant() {value_ints=[1]}
235 | # node_Expand_235
%"val_167"<?,?> ⬅️ ::Expand(%"val_165", %"val_166")
236 | # node_CastLike_236
%"val_168"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_13")
237 | # node_Expand_237
%"val_169"<?,?> ⬅️ ::Expand(%"val_168", %"val_167")
238 | # node_Constant_238
%"val_170"<?,?> ⬅️ ::Constant() {value_ints=[0]}
239 | # node_Unsqueeze_239
%"val_171"<?,?> ⬅️ ::Unsqueeze(%"val_relu_13", %"val_170")
240 | # node_Conv_240
%"val_172"<?,?> ⬅️ ::Conv(%"val_171", %"layer4.0.conv2.weight", %"val_169") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
241 | # node_Constant_241
%"val_173"<?,?> ⬅️ ::Constant() {value_ints=[0]}
242 | # node_Squeeze_242
%"val_convolution_16"<FLOAT,[4,512,7,7]> ⬅️ ::Squeeze(%"val_172", %"val_173")
243 | # node_aten_add_243
%"val_add_22"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer4.0.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
244 | # node_Constant_244
%"val_174"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
245 | # node__aten_native_batch_norm_training_onnx_245
%"getitem_82"<FLOAT,[4,512,7,7]>, %"val__native_batch_norm_legit_functional_16__1"<FLOAT,[512]>, %"val__native_batch_norm_legit_functional_16__2"<FLOAT,[512]>, %"getitem_85"<FLOAT,[512]>, %"getitem_86"<FLOAT,[512]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_16", %"layer4.0.bn2.weight", %"layer4.0.bn2.bias", %"layer4.0.bn2.running_mean", %"layer4.0.bn2.running_var", %"val_174") {momentum=0.9, eps=1e-05}
246 | # node_Shape_246
%"val_175"<?,?> ⬅️ ::Shape(%"layer4.0.downsample.0.weight") {end=1, start=0}
247 | # node_Constant_247
%"val_176"<?,?> ⬅️ ::Constant() {value_ints=[1]}
248 | # node_Expand_248
%"val_177"<?,?> ⬅️ ::Expand(%"val_175", %"val_176")
249 | # node_CastLike_249
%"val_178"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_12")
250 | # node_Expand_250
%"val_179"<?,?> ⬅️ ::Expand(%"val_178", %"val_177")
251 | # node_Constant_251
%"val_180"<?,?> ⬅️ ::Constant() {value_ints=[0]}
252 | # node_Unsqueeze_252
%"val_181"<?,?> ⬅️ ::Unsqueeze(%"val_relu_12", %"val_180")
253 | # node_Conv_253
%"val_182"<?,?> ⬅️ ::Conv(%"val_181", %"layer4.0.downsample.0.weight", %"val_179") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[0, 0, 0, 0], strides=[2, 2]}
254 | # node_Constant_254
%"val_183"<?,?> ⬅️ ::Constant() {value_ints=[0]}
255 | # node_Squeeze_255
%"val_convolution_17"<FLOAT,[4,512,7,7]> ⬅️ ::Squeeze(%"val_182", %"val_183")
256 | # node_aten_add_256
%"val_add_23"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer4.0.downsample.1.num_batches_tracked", %"val_6") {alpha=1.0}
257 | # node_Constant_257
%"val_184"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
258 | # node__aten_native_batch_norm_training_onnx_258
%"getitem_87"<FLOAT,[4,512,7,7]>, %"val__native_batch_norm_legit_functional_17__1"<FLOAT,[512]>, %"val__native_batch_norm_legit_functional_17__2"<FLOAT,[512]>, %"getitem_90"<FLOAT,[512]>, %"getitem_91"<FLOAT,[512]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_17", %"layer4.0.downsample.1.weight", %"layer4.0.downsample.1.bias", %"layer4.0.downsample.1.running_mean", %"layer4.0.downsample.1.running_var", %"val_184") {momentum=0.9, eps=1e-05}
259 | # node_aten_add_259
%"val_add_24"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_82", %"getitem_87") {alpha=1.0}
260 | # node_aten_relu_260
%"val_relu_14"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_24")
261 | # node_Shape_261
%"val_185"<?,?> ⬅️ ::Shape(%"layer4.1.conv1.weight") {end=1, start=0}
262 | # node_Constant_262
%"val_186"<?,?> ⬅️ ::Constant() {value_ints=[1]}
263 | # node_Expand_263
%"val_187"<?,?> ⬅️ ::Expand(%"val_185", %"val_186")
264 | # node_CastLike_264
%"val_188"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_14")
265 | # node_Expand_265
%"val_189"<?,?> ⬅️ ::Expand(%"val_188", %"val_187")
266 | # node_Constant_266
%"val_190"<?,?> ⬅️ ::Constant() {value_ints=[0]}
267 | # node_Unsqueeze_267
%"val_191"<?,?> ⬅️ ::Unsqueeze(%"val_relu_14", %"val_190")
268 | # node_Conv_268
%"val_192"<?,?> ⬅️ ::Conv(%"val_191", %"layer4.1.conv1.weight", %"val_189") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
269 | # node_Constant_269
%"val_193"<?,?> ⬅️ ::Constant() {value_ints=[0]}
270 | # node_Squeeze_270
%"val_convolution_18"<FLOAT,[4,512,7,7]> ⬅️ ::Squeeze(%"val_192", %"val_193")
271 | # node_aten_add_271
%"val_add_25"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer4.1.bn1.num_batches_tracked", %"val_6") {alpha=1.0}
272 | # node_Constant_272
%"val_194"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
273 | # node__aten_native_batch_norm_training_onnx_273
%"getitem_92"<FLOAT,[4,512,7,7]>, %"val__native_batch_norm_legit_functional_18__1"<FLOAT,[512]>, %"val__native_batch_norm_legit_functional_18__2"<FLOAT,[512]>, %"getitem_95"<FLOAT,[512]>, %"getitem_96"<FLOAT,[512]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_18", %"layer4.1.bn1.weight", %"layer4.1.bn1.bias", %"layer4.1.bn1.running_mean", %"layer4.1.bn1.running_var", %"val_194") {momentum=0.9, eps=1e-05}
274 | # node_aten_relu_274
%"val_relu_15"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"getitem_92")
275 | # node_Shape_275
%"val_195"<?,?> ⬅️ ::Shape(%"layer4.1.conv2.weight") {end=1, start=0}
276 | # node_Constant_276
%"val_196"<?,?> ⬅️ ::Constant() {value_ints=[1]}
277 | # node_Expand_277
%"val_197"<?,?> ⬅️ ::Expand(%"val_195", %"val_196")
278 | # node_CastLike_278
%"val_198"<?,?> ⬅️ ::CastLike(%"val_3", %"val_relu_15")
279 | # node_Expand_279
%"val_199"<?,?> ⬅️ ::Expand(%"val_198", %"val_197")
280 | # node_Constant_280
%"val_200"<?,?> ⬅️ ::Constant() {value_ints=[0]}
281 | # node_Unsqueeze_281
%"val_201"<?,?> ⬅️ ::Unsqueeze(%"val_relu_15", %"val_200")
282 | # node_Conv_282
%"val_202"<?,?> ⬅️ ::Conv(%"val_201", %"layer4.1.conv2.weight", %"val_199") {auto_pad=NOTSET, dilations=[1, 1], group=1, pads=[1, 1, 1, 1], strides=[1, 1]}
283 | # node_Constant_283
%"val_203"<?,?> ⬅️ ::Constant() {value_ints=[0]}
284 | # node_Squeeze_284
%"val_convolution_19"<FLOAT,[4,512,7,7]> ⬅️ ::Squeeze(%"val_202", %"val_203")
285 | # node_aten_add_285
%"val_add_26"<INT64,[]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"layer4.1.bn2.num_batches_tracked", %"val_6") {alpha=1.0}
286 | # node_Constant_286
%"val_204"<?,?> ⬅️ ::Constant() {value_ints=[0, 2, 3]}
287 | # node__aten_native_batch_norm_training_onnx_287
%"getitem_97"<FLOAT,[4,512,7,7]>, %"val__native_batch_norm_legit_functional_19__1"<FLOAT,[512]>, %"val__native_batch_norm_legit_functional_19__2"<FLOAT,[512]>, %"getitem_100"<FLOAT,[512]>, %"getitem_101"<FLOAT,[512]> ⬅️ pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(%"val_convolution_19", %"layer4.1.bn2.weight", %"layer4.1.bn2.bias", %"layer4.1.bn2.running_mean", %"layer4.1.bn2.running_var", %"val_204") {momentum=0.9, eps=1e-05}
288 | # node_aten_add_288
%"val_add_27"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_add(%"getitem_97", %"val_relu_14") {alpha=1.0}
289 | # node_aten_relu_289
%"val_relu_16"<FLOAT,[4,512,7,7]> ⬅️ pkg.onnxscript.torch_lib::aten_relu(%"val_add_27")
290 | # node_Constant_290
%"val_205"<?,?> ⬅️ ::Constant() {value=Tensor<INT64,[2]>(array([-1, -2]), name=None)}
291 | # node_ReduceMean_291
%"val_mean"<FLOAT,[4,512,1,1]> ⬅️ ::ReduceMean(%"val_relu_16", %"val_205") {keepdims=True, noop_with_empty_axes=0}
292 | # node_Constant_292
%"val_206"<?,?> ⬅️ ::Constant() {value=Tensor<INT64,[2]>(array([ 4, 512]), name=None)}
293 | # node_aten_view_293
%"val_view"<FLOAT,[4,512]> ⬅️ pkg.onnxscript.torch_lib::aten_view(%"val_mean", %"val_206")
294 | # node_aten_addmm_294
%"val_addmm"<FLOAT,[4,1000]> ⬅️ pkg.onnxscript.torch_lib::aten_addmm(%"fc.bias", %"val_view", %"fc.weight") {beta=1.0, alpha=1.0}
return %"val_addmm"<FLOAT,[4,1000]>
}
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_add(
inputs=(
%"self"<?,?>,
%"other"<?,?>
),
attributes={
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"alpha"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='alpha')}
1 | # n1
%"alpha_0"<?,?> ⬅️ ::CastLike(%"alpha", %"other")
2 | # n2
%"other_1"<?,?> ⬅️ ::Mul(%"other", %"alpha_0")
3 | # n3
%"return_val"<?,?> ⬅️ ::Add(%"self", %"other_1")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(
inputs=(
%"input"<?,?>,
%"weight"<?,?>,
%"bias"<?,?>,
%"running_mean"<?,?>,
%"running_var"<?,?>,
%"axes"<?,?>
),
attributes={
momentum: UNDEFINED,
eps: UNDEFINED
}
outputs=(
%"norm"<?,?>,
%"mean_2"<?,?>,
%"rstd"<?,?>,
%"running_mean_0"<?,?>,
%"new_running_var"<?,?>
),
) {
0 | # n0
%"norm"<?,?>, %"running_mean_0"<?,?>, %"_"<?,?> ⬅️ ::BatchNormalization(%"input", %"weight", %"bias", %"running_mean", %"running_var") {epsilon=RefAttr('epsilon', FLOAT, ref_attr_name='eps'), momentum=RefAttr('momentum', FLOAT, ref_attr_name='momentum'), training_mode=1}
1 | # n1
%"upcast_input"<?,?> ⬅️ ::Cast(%"input") {to=1}
2 | # n2
%"mean"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes")
3 | # n3
%"input_sub_mean"<?,?> ⬅️ ::Sub(%"upcast_input", %"mean")
4 | # n4
%"sqr"<?,?> ⬅️ ::Mul(%"input_sub_mean", %"input_sub_mean")
5 | # n5
%"var"<?,?> ⬅️ ::ReduceMean(%"sqr", %"axes") {keepdims=0}
6 | # n6
%"const"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const')}
7 | # n7
%"eps"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='eps')}
8 | # n8
%"eps_cast"<?,?> ⬅️ ::CastLike(%"eps", %"var")
9 | # n9
%"tmp"<?,?> ⬅️ ::Add(%"var", %"eps_cast")
10 | # n10
%"tmp_1"<?,?> ⬅️ ::Sqrt(%"tmp")
11 | # n11
%"const_cast"<?,?> ⬅️ ::CastLike(%"const", %"tmp_1")
12 | # n12
%"rstd"<?,?> ⬅️ ::Div(%"const_cast", %"tmp_1")
13 | # n13
%"mean_2"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes") {keepdims=0}
14 | # n14
%"tmp_3"<?,?> ⬅️ ::Size(%"input")
15 | # n15
%"tmp_4"<?,?> ⬅️ ::Shape(%"input")
16 | # n16
%"int64_1"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<INT64,[]>(name='int64_1')}
17 | # n17
%"tmp_4_subscripted"<?,?> ⬅️ ::Gather(%"tmp_4", %"int64_1") {axis=0}
18 | # n18
%"tmp_5"<?,?> ⬅️ ::Div(%"tmp_3", %"tmp_4_subscripted")
19 | # n19
%"n"<?,?> ⬅️ ::Cast(%"tmp_5") {to=1}
20 | # n20
%"const_6"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_6')}
21 | # n21
%"const_6_cast"<?,?> ⬅️ ::CastLike(%"const_6", %"n")
22 | # n22
%"tmp_7"<?,?> ⬅️ ::Sub(%"n", %"const_6_cast")
23 | # n23
%"tmp_8"<?,?> ⬅️ ::Div(%"n", %"tmp_7")
24 | # n24
%"unbiased_var"<?,?> ⬅️ ::Mul(%"var", %"tmp_8")
25 | # n25
%"const_9"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_9')}
26 | # n26
%"momentum"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
27 | # n27
%"tmp_10"<?,?> ⬅️ ::Sub(%"const_9", %"momentum")
28 | # n28
%"tmp_11"<?,?> ⬅️ ::Mul(%"tmp_10", %"unbiased_var")
29 | # n29
%"tmp_12"<?,?> ⬅️ ::CastLike(%"tmp_11", %"running_var")
30 | # n30
%"momentum_13"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
31 | # n31
%"momentum_13_cast"<?,?> ⬅️ ::CastLike(%"momentum_13", %"running_var")
32 | # n32
%"tmp_14"<?,?> ⬅️ ::Mul(%"momentum_13_cast", %"running_var")
33 | # n33
%"new_running_var"<?,?> ⬅️ ::Add(%"tmp_12", %"tmp_14")
return %"norm"<?,?>, %"mean_2"<?,?>, %"rstd"<?,?>, %"running_mean_0"<?,?>, %"new_running_var"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_relu(
inputs=(
%"self"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Relu(%"self")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_view(
inputs=(
%"self"<?,?>,
%"size"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"size_0"<?,?> ⬅️ ::Cast(%"size") {to=7}
1 | # n1
%"return_val"<?,?> ⬅️ ::Reshape(%"self", %"size_0")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_addmm(
inputs=(
%"self"<?,?>,
%"mat1"<?,?>,
%"mat2"<?,?>
),
attributes={
beta: FLOAT = 1.0,
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Gemm(%"mat1", %"mat2", %"self") {alpha=RefAttr('alpha', FLOAT, ref_attr_name='alpha'), beta=RefAttr('beta', FLOAT, ref_attr_name='beta')}
return %"return_val"<?,?>
}
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_add(
inputs=(
%"self"<?,?>,
%"other"<?,?>
),
attributes={
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"alpha"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='alpha')}
1 | # n1
%"alpha_0"<?,?> ⬅️ ::CastLike(%"alpha", %"other")
2 | # n2
%"other_1"<?,?> ⬅️ ::Mul(%"other", %"alpha_0")
3 | # n3
%"return_val"<?,?> ⬅️ ::Add(%"self", %"other_1")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(
inputs=(
%"input"<?,?>,
%"weight"<?,?>,
%"bias"<?,?>,
%"running_mean"<?,?>,
%"running_var"<?,?>,
%"axes"<?,?>
),
attributes={
momentum: UNDEFINED,
eps: UNDEFINED
}
outputs=(
%"norm"<?,?>,
%"mean_2"<?,?>,
%"rstd"<?,?>,
%"running_mean_0"<?,?>,
%"new_running_var"<?,?>
),
) {
0 | # n0
%"norm"<?,?>, %"running_mean_0"<?,?>, %"_"<?,?> ⬅️ ::BatchNormalization(%"input", %"weight", %"bias", %"running_mean", %"running_var") {epsilon=RefAttr('epsilon', FLOAT, ref_attr_name='eps'), momentum=RefAttr('momentum', FLOAT, ref_attr_name='momentum'), training_mode=1}
1 | # n1
%"upcast_input"<?,?> ⬅️ ::Cast(%"input") {to=1}
2 | # n2
%"mean"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes")
3 | # n3
%"input_sub_mean"<?,?> ⬅️ ::Sub(%"upcast_input", %"mean")
4 | # n4
%"sqr"<?,?> ⬅️ ::Mul(%"input_sub_mean", %"input_sub_mean")
5 | # n5
%"var"<?,?> ⬅️ ::ReduceMean(%"sqr", %"axes") {keepdims=0}
6 | # n6
%"const"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const')}
7 | # n7
%"eps"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='eps')}
8 | # n8
%"eps_cast"<?,?> ⬅️ ::CastLike(%"eps", %"var")
9 | # n9
%"tmp"<?,?> ⬅️ ::Add(%"var", %"eps_cast")
10 | # n10
%"tmp_1"<?,?> ⬅️ ::Sqrt(%"tmp")
11 | # n11
%"const_cast"<?,?> ⬅️ ::CastLike(%"const", %"tmp_1")
12 | # n12
%"rstd"<?,?> ⬅️ ::Div(%"const_cast", %"tmp_1")
13 | # n13
%"mean_2"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes") {keepdims=0}
14 | # n14
%"tmp_3"<?,?> ⬅️ ::Size(%"input")
15 | # n15
%"tmp_4"<?,?> ⬅️ ::Shape(%"input")
16 | # n16
%"int64_1"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<INT64,[]>(name='int64_1')}
17 | # n17
%"tmp_4_subscripted"<?,?> ⬅️ ::Gather(%"tmp_4", %"int64_1") {axis=0}
18 | # n18
%"tmp_5"<?,?> ⬅️ ::Div(%"tmp_3", %"tmp_4_subscripted")
19 | # n19
%"n"<?,?> ⬅️ ::Cast(%"tmp_5") {to=1}
20 | # n20
%"const_6"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_6')}
21 | # n21
%"const_6_cast"<?,?> ⬅️ ::CastLike(%"const_6", %"n")
22 | # n22
%"tmp_7"<?,?> ⬅️ ::Sub(%"n", %"const_6_cast")
23 | # n23
%"tmp_8"<?,?> ⬅️ ::Div(%"n", %"tmp_7")
24 | # n24
%"unbiased_var"<?,?> ⬅️ ::Mul(%"var", %"tmp_8")
25 | # n25
%"const_9"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_9')}
26 | # n26
%"momentum"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
27 | # n27
%"tmp_10"<?,?> ⬅️ ::Sub(%"const_9", %"momentum")
28 | # n28
%"tmp_11"<?,?> ⬅️ ::Mul(%"tmp_10", %"unbiased_var")
29 | # n29
%"tmp_12"<?,?> ⬅️ ::CastLike(%"tmp_11", %"running_var")
30 | # n30
%"momentum_13"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
31 | # n31
%"momentum_13_cast"<?,?> ⬅️ ::CastLike(%"momentum_13", %"running_var")
32 | # n32
%"tmp_14"<?,?> ⬅️ ::Mul(%"momentum_13_cast", %"running_var")
33 | # n33
%"new_running_var"<?,?> ⬅️ ::Add(%"tmp_12", %"tmp_14")
return %"norm"<?,?>, %"mean_2"<?,?>, %"rstd"<?,?>, %"running_mean_0"<?,?>, %"new_running_var"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_relu(
inputs=(
%"self"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Relu(%"self")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_view(
inputs=(
%"self"<?,?>,
%"size"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"size_0"<?,?> ⬅️ ::Cast(%"size") {to=7}
1 | # n1
%"return_val"<?,?> ⬅️ ::Reshape(%"self", %"size_0")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_addmm(
inputs=(
%"self"<?,?>,
%"mat1"<?,?>,
%"mat2"<?,?>
),
attributes={
beta: FLOAT = 1.0,
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Gemm(%"mat1", %"mat2", %"self") {alpha=RefAttr('alpha', FLOAT, ref_attr_name='alpha'), beta=RefAttr('beta', FLOAT, ref_attr_name='beta')}
return %"return_val"<?,?>
}
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_add(
inputs=(
%"self"<?,?>,
%"other"<?,?>
),
attributes={
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"alpha"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='alpha')}
1 | # n1
%"alpha_0"<?,?> ⬅️ ::CastLike(%"alpha", %"other")
2 | # n2
%"other_1"<?,?> ⬅️ ::Mul(%"other", %"alpha_0")
3 | # n3
%"return_val"<?,?> ⬅️ ::Add(%"self", %"other_1")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(
inputs=(
%"input"<?,?>,
%"weight"<?,?>,
%"bias"<?,?>,
%"running_mean"<?,?>,
%"running_var"<?,?>,
%"axes"<?,?>
),
attributes={
momentum: UNDEFINED,
eps: UNDEFINED
}
outputs=(
%"norm"<?,?>,
%"mean_2"<?,?>,
%"rstd"<?,?>,
%"running_mean_0"<?,?>,
%"new_running_var"<?,?>
),
) {
0 | # n0
%"norm"<?,?>, %"running_mean_0"<?,?>, %"_"<?,?> ⬅️ ::BatchNormalization(%"input", %"weight", %"bias", %"running_mean", %"running_var") {epsilon=RefAttr('epsilon', FLOAT, ref_attr_name='eps'), momentum=RefAttr('momentum', FLOAT, ref_attr_name='momentum'), training_mode=1}
1 | # n1
%"upcast_input"<?,?> ⬅️ ::Cast(%"input") {to=1}
2 | # n2
%"mean"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes")
3 | # n3
%"input_sub_mean"<?,?> ⬅️ ::Sub(%"upcast_input", %"mean")
4 | # n4
%"sqr"<?,?> ⬅️ ::Mul(%"input_sub_mean", %"input_sub_mean")
5 | # n5
%"var"<?,?> ⬅️ ::ReduceMean(%"sqr", %"axes") {keepdims=0}
6 | # n6
%"const"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const')}
7 | # n7
%"eps"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='eps')}
8 | # n8
%"eps_cast"<?,?> ⬅️ ::CastLike(%"eps", %"var")
9 | # n9
%"tmp"<?,?> ⬅️ ::Add(%"var", %"eps_cast")
10 | # n10
%"tmp_1"<?,?> ⬅️ ::Sqrt(%"tmp")
11 | # n11
%"const_cast"<?,?> ⬅️ ::CastLike(%"const", %"tmp_1")
12 | # n12
%"rstd"<?,?> ⬅️ ::Div(%"const_cast", %"tmp_1")
13 | # n13
%"mean_2"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes") {keepdims=0}
14 | # n14
%"tmp_3"<?,?> ⬅️ ::Size(%"input")
15 | # n15
%"tmp_4"<?,?> ⬅️ ::Shape(%"input")
16 | # n16
%"int64_1"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<INT64,[]>(name='int64_1')}
17 | # n17
%"tmp_4_subscripted"<?,?> ⬅️ ::Gather(%"tmp_4", %"int64_1") {axis=0}
18 | # n18
%"tmp_5"<?,?> ⬅️ ::Div(%"tmp_3", %"tmp_4_subscripted")
19 | # n19
%"n"<?,?> ⬅️ ::Cast(%"tmp_5") {to=1}
20 | # n20
%"const_6"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_6')}
21 | # n21
%"const_6_cast"<?,?> ⬅️ ::CastLike(%"const_6", %"n")
22 | # n22
%"tmp_7"<?,?> ⬅️ ::Sub(%"n", %"const_6_cast")
23 | # n23
%"tmp_8"<?,?> ⬅️ ::Div(%"n", %"tmp_7")
24 | # n24
%"unbiased_var"<?,?> ⬅️ ::Mul(%"var", %"tmp_8")
25 | # n25
%"const_9"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_9')}
26 | # n26
%"momentum"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
27 | # n27
%"tmp_10"<?,?> ⬅️ ::Sub(%"const_9", %"momentum")
28 | # n28
%"tmp_11"<?,?> ⬅️ ::Mul(%"tmp_10", %"unbiased_var")
29 | # n29
%"tmp_12"<?,?> ⬅️ ::CastLike(%"tmp_11", %"running_var")
30 | # n30
%"momentum_13"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
31 | # n31
%"momentum_13_cast"<?,?> ⬅️ ::CastLike(%"momentum_13", %"running_var")
32 | # n32
%"tmp_14"<?,?> ⬅️ ::Mul(%"momentum_13_cast", %"running_var")
33 | # n33
%"new_running_var"<?,?> ⬅️ ::Add(%"tmp_12", %"tmp_14")
return %"norm"<?,?>, %"mean_2"<?,?>, %"rstd"<?,?>, %"running_mean_0"<?,?>, %"new_running_var"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_relu(
inputs=(
%"self"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Relu(%"self")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_view(
inputs=(
%"self"<?,?>,
%"size"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"size_0"<?,?> ⬅️ ::Cast(%"size") {to=7}
1 | # n1
%"return_val"<?,?> ⬅️ ::Reshape(%"self", %"size_0")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_addmm(
inputs=(
%"self"<?,?>,
%"mat1"<?,?>,
%"mat2"<?,?>
),
attributes={
beta: FLOAT = 1.0,
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Gemm(%"mat1", %"mat2", %"self") {alpha=RefAttr('alpha', FLOAT, ref_attr_name='alpha'), beta=RefAttr('beta', FLOAT, ref_attr_name='beta')}
return %"return_val"<?,?>
}
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_add(
inputs=(
%"self"<?,?>,
%"other"<?,?>
),
attributes={
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"alpha"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='alpha')}
1 | # n1
%"alpha_0"<?,?> ⬅️ ::CastLike(%"alpha", %"other")
2 | # n2
%"other_1"<?,?> ⬅️ ::Mul(%"other", %"alpha_0")
3 | # n3
%"return_val"<?,?> ⬅️ ::Add(%"self", %"other_1")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(
inputs=(
%"input"<?,?>,
%"weight"<?,?>,
%"bias"<?,?>,
%"running_mean"<?,?>,
%"running_var"<?,?>,
%"axes"<?,?>
),
attributes={
momentum: UNDEFINED,
eps: UNDEFINED
}
outputs=(
%"norm"<?,?>,
%"mean_2"<?,?>,
%"rstd"<?,?>,
%"running_mean_0"<?,?>,
%"new_running_var"<?,?>
),
) {
0 | # n0
%"norm"<?,?>, %"running_mean_0"<?,?>, %"_"<?,?> ⬅️ ::BatchNormalization(%"input", %"weight", %"bias", %"running_mean", %"running_var") {epsilon=RefAttr('epsilon', FLOAT, ref_attr_name='eps'), momentum=RefAttr('momentum', FLOAT, ref_attr_name='momentum'), training_mode=1}
1 | # n1
%"upcast_input"<?,?> ⬅️ ::Cast(%"input") {to=1}
2 | # n2
%"mean"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes")
3 | # n3
%"input_sub_mean"<?,?> ⬅️ ::Sub(%"upcast_input", %"mean")
4 | # n4
%"sqr"<?,?> ⬅️ ::Mul(%"input_sub_mean", %"input_sub_mean")
5 | # n5
%"var"<?,?> ⬅️ ::ReduceMean(%"sqr", %"axes") {keepdims=0}
6 | # n6
%"const"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const')}
7 | # n7
%"eps"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='eps')}
8 | # n8
%"eps_cast"<?,?> ⬅️ ::CastLike(%"eps", %"var")
9 | # n9
%"tmp"<?,?> ⬅️ ::Add(%"var", %"eps_cast")
10 | # n10
%"tmp_1"<?,?> ⬅️ ::Sqrt(%"tmp")
11 | # n11
%"const_cast"<?,?> ⬅️ ::CastLike(%"const", %"tmp_1")
12 | # n12
%"rstd"<?,?> ⬅️ ::Div(%"const_cast", %"tmp_1")
13 | # n13
%"mean_2"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes") {keepdims=0}
14 | # n14
%"tmp_3"<?,?> ⬅️ ::Size(%"input")
15 | # n15
%"tmp_4"<?,?> ⬅️ ::Shape(%"input")
16 | # n16
%"int64_1"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<INT64,[]>(name='int64_1')}
17 | # n17
%"tmp_4_subscripted"<?,?> ⬅️ ::Gather(%"tmp_4", %"int64_1") {axis=0}
18 | # n18
%"tmp_5"<?,?> ⬅️ ::Div(%"tmp_3", %"tmp_4_subscripted")
19 | # n19
%"n"<?,?> ⬅️ ::Cast(%"tmp_5") {to=1}
20 | # n20
%"const_6"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_6')}
21 | # n21
%"const_6_cast"<?,?> ⬅️ ::CastLike(%"const_6", %"n")
22 | # n22
%"tmp_7"<?,?> ⬅️ ::Sub(%"n", %"const_6_cast")
23 | # n23
%"tmp_8"<?,?> ⬅️ ::Div(%"n", %"tmp_7")
24 | # n24
%"unbiased_var"<?,?> ⬅️ ::Mul(%"var", %"tmp_8")
25 | # n25
%"const_9"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_9')}
26 | # n26
%"momentum"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
27 | # n27
%"tmp_10"<?,?> ⬅️ ::Sub(%"const_9", %"momentum")
28 | # n28
%"tmp_11"<?,?> ⬅️ ::Mul(%"tmp_10", %"unbiased_var")
29 | # n29
%"tmp_12"<?,?> ⬅️ ::CastLike(%"tmp_11", %"running_var")
30 | # n30
%"momentum_13"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
31 | # n31
%"momentum_13_cast"<?,?> ⬅️ ::CastLike(%"momentum_13", %"running_var")
32 | # n32
%"tmp_14"<?,?> ⬅️ ::Mul(%"momentum_13_cast", %"running_var")
33 | # n33
%"new_running_var"<?,?> ⬅️ ::Add(%"tmp_12", %"tmp_14")
return %"norm"<?,?>, %"mean_2"<?,?>, %"rstd"<?,?>, %"running_mean_0"<?,?>, %"new_running_var"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_relu(
inputs=(
%"self"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Relu(%"self")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_view(
inputs=(
%"self"<?,?>,
%"size"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"size_0"<?,?> ⬅️ ::Cast(%"size") {to=7}
1 | # n1
%"return_val"<?,?> ⬅️ ::Reshape(%"self", %"size_0")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_addmm(
inputs=(
%"self"<?,?>,
%"mat1"<?,?>,
%"mat2"<?,?>
),
attributes={
beta: FLOAT = 1.0,
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Gemm(%"mat1", %"mat2", %"self") {alpha=RefAttr('alpha', FLOAT, ref_attr_name='alpha'), beta=RefAttr('beta', FLOAT, ref_attr_name='beta')}
return %"return_val"<?,?>
}
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_add(
inputs=(
%"self"<?,?>,
%"other"<?,?>
),
attributes={
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"alpha"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='alpha')}
1 | # n1
%"alpha_0"<?,?> ⬅️ ::CastLike(%"alpha", %"other")
2 | # n2
%"other_1"<?,?> ⬅️ ::Mul(%"other", %"alpha_0")
3 | # n3
%"return_val"<?,?> ⬅️ ::Add(%"self", %"other_1")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::_aten_native_batch_norm_training_onnx(
inputs=(
%"input"<?,?>,
%"weight"<?,?>,
%"bias"<?,?>,
%"running_mean"<?,?>,
%"running_var"<?,?>,
%"axes"<?,?>
),
attributes={
momentum: UNDEFINED,
eps: UNDEFINED
}
outputs=(
%"norm"<?,?>,
%"mean_2"<?,?>,
%"rstd"<?,?>,
%"running_mean_0"<?,?>,
%"new_running_var"<?,?>
),
) {
0 | # n0
%"norm"<?,?>, %"running_mean_0"<?,?>, %"_"<?,?> ⬅️ ::BatchNormalization(%"input", %"weight", %"bias", %"running_mean", %"running_var") {epsilon=RefAttr('epsilon', FLOAT, ref_attr_name='eps'), momentum=RefAttr('momentum', FLOAT, ref_attr_name='momentum'), training_mode=1}
1 | # n1
%"upcast_input"<?,?> ⬅️ ::Cast(%"input") {to=1}
2 | # n2
%"mean"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes")
3 | # n3
%"input_sub_mean"<?,?> ⬅️ ::Sub(%"upcast_input", %"mean")
4 | # n4
%"sqr"<?,?> ⬅️ ::Mul(%"input_sub_mean", %"input_sub_mean")
5 | # n5
%"var"<?,?> ⬅️ ::ReduceMean(%"sqr", %"axes") {keepdims=0}
6 | # n6
%"const"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const')}
7 | # n7
%"eps"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='eps')}
8 | # n8
%"eps_cast"<?,?> ⬅️ ::CastLike(%"eps", %"var")
9 | # n9
%"tmp"<?,?> ⬅️ ::Add(%"var", %"eps_cast")
10 | # n10
%"tmp_1"<?,?> ⬅️ ::Sqrt(%"tmp")
11 | # n11
%"const_cast"<?,?> ⬅️ ::CastLike(%"const", %"tmp_1")
12 | # n12
%"rstd"<?,?> ⬅️ ::Div(%"const_cast", %"tmp_1")
13 | # n13
%"mean_2"<?,?> ⬅️ ::ReduceMean(%"upcast_input", %"axes") {keepdims=0}
14 | # n14
%"tmp_3"<?,?> ⬅️ ::Size(%"input")
15 | # n15
%"tmp_4"<?,?> ⬅️ ::Shape(%"input")
16 | # n16
%"int64_1"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<INT64,[]>(name='int64_1')}
17 | # n17
%"tmp_4_subscripted"<?,?> ⬅️ ::Gather(%"tmp_4", %"int64_1") {axis=0}
18 | # n18
%"tmp_5"<?,?> ⬅️ ::Div(%"tmp_3", %"tmp_4_subscripted")
19 | # n19
%"n"<?,?> ⬅️ ::Cast(%"tmp_5") {to=1}
20 | # n20
%"const_6"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_6')}
21 | # n21
%"const_6_cast"<?,?> ⬅️ ::CastLike(%"const_6", %"n")
22 | # n22
%"tmp_7"<?,?> ⬅️ ::Sub(%"n", %"const_6_cast")
23 | # n23
%"tmp_8"<?,?> ⬅️ ::Div(%"n", %"tmp_7")
24 | # n24
%"unbiased_var"<?,?> ⬅️ ::Mul(%"var", %"tmp_8")
25 | # n25
%"const_9"<?,?> ⬅️ ::Constant() {value=TensorProtoTensor<FLOAT,[]>(name='const_9')}
26 | # n26
%"momentum"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
27 | # n27
%"tmp_10"<?,?> ⬅️ ::Sub(%"const_9", %"momentum")
28 | # n28
%"tmp_11"<?,?> ⬅️ ::Mul(%"tmp_10", %"unbiased_var")
29 | # n29
%"tmp_12"<?,?> ⬅️ ::CastLike(%"tmp_11", %"running_var")
30 | # n30
%"momentum_13"<?,?> ⬅️ ::Constant() {value_float=RefAttr('value_float', FLOAT, ref_attr_name='momentum')}
31 | # n31
%"momentum_13_cast"<?,?> ⬅️ ::CastLike(%"momentum_13", %"running_var")
32 | # n32
%"tmp_14"<?,?> ⬅️ ::Mul(%"momentum_13_cast", %"running_var")
33 | # n33
%"new_running_var"<?,?> ⬅️ ::Add(%"tmp_12", %"tmp_14")
return %"norm"<?,?>, %"mean_2"<?,?>, %"rstd"<?,?>, %"running_mean_0"<?,?>, %"new_running_var"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_relu(
inputs=(
%"self"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Relu(%"self")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_view(
inputs=(
%"self"<?,?>,
%"size"<?,?>
),
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"size_0"<?,?> ⬅️ ::Cast(%"size") {to=7}
1 | # n1
%"return_val"<?,?> ⬅️ ::Reshape(%"self", %"size_0")
return %"return_val"<?,?>
},
<
opset_imports={'': 18},
>
def pkg.onnxscript.torch_lib::aten_addmm(
inputs=(
%"self"<?,?>,
%"mat1"<?,?>,
%"mat2"<?,?>
),
attributes={
beta: FLOAT = 1.0,
alpha: FLOAT = 1.0
}
outputs=(
%"return_val"<?,?>
),
) {
0 | # n0
%"return_val"<?,?> ⬅️ ::Gemm(%"mat1", %"mat2", %"self") {alpha=RefAttr('alpha', FLOAT, ref_attr_name='alpha'), beta=RefAttr('beta', FLOAT, ref_attr_name='beta')}
return %"return_val"<?,?>
}
PyTorch ONNX Conversion Analysis
The model has 11689512 parameters and 9620 buffers (non-trainable parameters). Number of parameters per dtype:
defaultdict(<class 'int'>, {torch.float32: 11689512})
Number of buffers per dtype:
defaultdict(<class 'int'>, {torch.float32: 9600, torch.int64: 20})
Inputs:
arg122_1
: TensorMetadata(shape=torch.Size([4, 3, 224, 224]), dtype=torch.float32, requires_grad=False, stride=(150528, 50176, 224, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
Outputs:
addmm
: TensorMetadata(shape=torch.Size([4, 1000]), dtype=torch.float32, requires_grad=False, stride=(1000, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
The FX graph has 275 nodes in total. Number of FX nodes per op:
placeholder
: 123call_function
: 151output
: 1Of the call_function nodes, the counts of operators used are:
<built-in function getitem>
: 61aten.add.Tensor
: 28aten.convolution.default
: 20aten._native_batch_norm_legit_functional.default
: 20aten.relu.default
: 17aten.max_pool2d_with_indices.default
: 1aten.mean.dim
: 1aten.view.default
: 1aten.t.default
: 1aten.addmm.default
: 1All operators in the model have registered ONNX decompositions.
_ ._ __/__ _ _ _ _ _/_ Recorded: 10:49:55 Samples: 1744
/_//_/// /_\ / //_// / //_'/ // Duration: 1.967 CPU time: 5.017
/ _/ v4.6.2
Program: /Users/justinc/Documents/GitHub/torch-onnx/tests/resnet_export.py
1.967 _torch_onnx_export_adapter_with_error_report torch_onnx/_patch.py:210
└─ 1.965 _torch_onnx_export_adaptor torch_onnx/_patch.py:139
├─ 1.207 export torch/export/__init__.py:73
│ [298 frames hidden] torch, contextlib, copy, tokenize, im...
├─ 0.655 exported_program_to_ir torch_onnx/_core.py:574
│ ├─ 0.360 wrapper torch/export/exported_program.py:80
│ │ [85 frames hidden] torch, <string>
│ ├─ 0.147 OnnxRegistry.from_torchlib torch_onnx/_registration.py:114
│ │ ├─ 0.088 TracedOnnxFunction.function_ir ../../onnxscript/onnxscript/values.py:587
│ │ │ ├─ 0.062 get_src_and_ast ../../onnxscript/onnxscript/_internal/ast_utils.py:16
│ │ │ │ └─ 0.044 getsource inspect.py:1256
│ │ │ │ [4 frames hidden] inspect, tokenize
│ │ │ └─ 0.025 Converter.translate_function_signature ../../onnxscript/onnxscript/converter.py:1463
│ │ │ └─ 0.024 Converter._translate_function_signature_common ../../onnxscript/onnxscript/converter.py:1378
│ │ └─ 0.055 OpSignature.from_function torch_onnx/_schemas.py:398
│ ├─ 0.077 _add_nodes torch_onnx/_core.py:473
│ │ └─ 0.076 _handle_call_function_node_with_lowering torch_onnx/_core.py:355
│ │ └─ 0.049 TracedOnnxFunction.__call__ ../../onnxscript/onnxscript/values.py:581
│ │ └─ 0.037 aten_convolution ../../onnxscript/onnxscript/function_libs/torch_lib/ops/core.py:1982
│ │ └─ 0.024 OnnxFunction.__call__ ../../onnxscript/onnxscript/values.py:523
│ │ └─ 0.024 OpRecorder.eval_function torch_onnx/_building.py:391
│ └─ 0.058 insert_type_promotion_nodes torch_onnx/_fx_passes.py:6
│ └─ 0.055 wrapper torch/onnx/_internal/diagnostics/infra/decorator.py:71
│ [20 frames hidden] torch
├─ 0.059 save_model onnx/__init__.py:278
│ [3 frames hidden] onnx, <built-in>
└─ 0.026 serialize_model ../../onnxscript/onnxscript/ir/serde.py:983
└─ 0.026 wrapper ../../onnxscript/onnxscript/ir/serde.py:93
└─ 0.026 serialize_model_into ../../onnxscript/onnxscript/ir/serde.py:987
└─ 0.026 wrapper ../../onnxscript/onnxscript/ir/serde.py:93
└─ 0.025 serialize_graph_into ../../onnxscript/onnxscript/ir/serde.py:1143
└─ 0.025 wrapper ../../onnxscript/onnxscript/ir/serde.py:93
E.g
PyTorch ONNX Conversion Error Report
Error message:
Exported program:
Analysis
PyTorch ONNX Conversion Analysis
Model Information
The model has 0 parameters and 0 buffers (non-trainable parameters). Number of parameters per dtype: defaultdict(<class 'int'>, {}) Number of buffers per dtype: defaultdict(<class 'int'>, {})
Inputs:
arg0_1
:TensorMetadata(shape=torch.Size([1, 1, 2, 3, 2]), dtype=torch.float32, requires_grad=False, stride=(12, 12, 6, 2, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
arg1_1
:TensorMetadata(shape=torch.Size([1, 3, 2, 4, 3]), dtype=torch.float32, requires_grad=False, stride=(72, 24, 12, 3, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
Outputs:
grid_sampler_3d
:TensorMetadata(shape=torch.Size([1, 1, 3, 2, 4]), dtype=torch.float32, requires_grad=False, stride=(24, 24, 8, 4, 1), memory_format=torch.contiguous_format, is_quantized=False, qparams={})
The FX graph has 4 nodes in total. Number of FX nodes per op:
placeholder
: 2call_function
: 1output
: 1Of the call_function nodes, the counts of operators used are:
aten.grid_sampler_3d.default
: 1ONNX Conversion Information
The model contains operators the dispatcher could not find registered ONNX decompositions for. This may be due to missing implementations, decompositions not registered correctly, or a bug in the dispatcher.
Errors grouped by operator:
aten.grid_sampler_3d.default
: No decompositions registered for the real-valued input. Example node:%grid_sampler_3d : [num_users=1] = call_function[target=torch.ops.aten.grid_sampler_3d.default](args = (%arg0_1, %arg1_1, 0, 0, True), kwargs = {})
. All nodes:[grid_sampler_3d]
Profile result