{
  "format": "tensorviz.graph",
  "version": 3,
  "exportedAt": "2026-09-17T06:26:29.596489+00:00",
  "status": "static",
  "warningCount": 0,
  "document": {
    "schemaVersion": 2,
    "semantic": {
      "graph_id": "snapshot",
      "name": "ReducedResNet18",
      "revision": 0,
      "nodes": [
        {
          "node_id": "input",
          "kind": "input",
          "op": "Input",
          "params": {
            "shape": "1,3,64,64"
          },
          "in_ports": [],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "input",
              "name": "Input",
              "displayName": "Input",
              "description": "Model input node",
              "icon": "ArrowRight",
              "category": "io",
              "parameters": [
                {
                  "name": "shape",
                  "type": "string",
                  "defaultValue": "1,3,224,224",
                  "required": true,
                  "description": "Input tensor shape (comma-separated, e.g., 1,3,224,224)"
                },
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "input",
                  "required": false,
                  "description": "Name for this input"
                }
              ]
            }
          }
        },
        {
          "node_id": "stem",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "in_channels": 3,
            "out_channels": 8,
            "kernel_size": 7,
            "stride": 2,
            "padding": 3,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            }
          }
        },
        {
          "node_id": "stem_norm",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {
            "num_features": 8
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            }
          }
        },
        {
          "node_id": "stem_relu",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            }
          }
        },
        {
          "node_id": "pool",
          "kind": "layer",
          "op": "MaxPool2d",
          "params": {
            "kernel_size": 3,
            "stride": 2,
            "padding": 1
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "maxpool2d",
              "name": "MaxPool2d",
              "displayName": "MaxPool2D",
              "description": "2D Max Pooling",
              "icon": "Square",
              "category": "pool",
              "parameters": [
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 2,
                  "required": true,
                  "description": "Size of the window to take a max over",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 2,
                  "required": false,
                  "description": "Stride of the window",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Implicit zero padding to be added",
                  "min": 0
                }
              ]
            }
          }
        },
        {
          "node_id": "stage1",
          "kind": "module",
          "op": "Module",
          "params": {
            "arg_0": 8
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "moduleInstanceId": "stage1",
            "moduleTemplateId": "model::IdentityStage",
            "isGroup": true,
            "moduleMembers": [
              "stage1.first",
              "stage1.second"
            ],
            "moduleLayerCount": 14
          }
        },
        {
          "node_id": "stage2",
          "kind": "module",
          "op": "Module",
          "params": {
            "arg_0": 8,
            "arg_1": 16
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "moduleInstanceId": "stage2",
            "moduleTemplateId": "model::DownsampleStage",
            "isGroup": true,
            "moduleMembers": [
              "stage2.first",
              "stage2.second"
            ],
            "moduleLayerCount": 16
          }
        },
        {
          "node_id": "stage3",
          "kind": "module",
          "op": "Module",
          "params": {
            "arg_0": 16,
            "arg_1": 32
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "moduleInstanceId": "stage3",
            "moduleTemplateId": "model::DownsampleStage",
            "isGroup": true,
            "moduleMembers": [
              "stage3.first",
              "stage3.second"
            ],
            "moduleLayerCount": 16
          }
        },
        {
          "node_id": "stage4",
          "kind": "module",
          "op": "Module",
          "params": {
            "arg_0": 32,
            "arg_1": 64
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "moduleInstanceId": "stage4",
            "moduleTemplateId": "model::DownsampleStage",
            "isGroup": true,
            "moduleMembers": [
              "stage4.first",
              "stage4.second"
            ],
            "moduleLayerCount": 16
          }
        },
        {
          "node_id": "average",
          "kind": "layer",
          "op": "AdaptiveAvgPool2d",
          "params": {
            "output_size": 1
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "adaptiveavgpool2d",
              "name": "AdaptiveAvgPool2d",
              "displayName": "AdaptiveAvgPool2D",
              "description": "2D Adaptive Average Pooling to a target output size",
              "icon": "Square",
              "category": "pool",
              "parameters": [
                {
                  "name": "output_size",
                  "type": "number",
                  "defaultValue": 1,
                  "required": true,
                  "description": "Target output size (H × W)",
                  "min": 1
                }
              ]
            }
          }
        },
        {
          "node_id": "flatten",
          "kind": "layer",
          "op": "Flatten",
          "params": {
            "start_dim": 1
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "flatten",
              "name": "Flatten",
              "displayName": "Flatten",
              "description": "Flattens input tensor contiguously",
              "icon": "Maximize2",
              "category": "tensor",
              "parameters": [
                {
                  "name": "start_dim",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "First dim to flatten",
                  "min": 0
                },
                {
                  "name": "end_dim",
                  "type": "number",
                  "defaultValue": -1,
                  "required": false,
                  "description": "Last dim to flatten"
                }
              ]
            }
          }
        },
        {
          "node_id": "head",
          "kind": "layer",
          "op": "Linear",
          "params": {
            "in_features": 64,
            "out_features": 10
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "linear",
              "name": "Linear",
              "displayName": "Linear",
              "description": "Fully Connected Layer",
              "icon": "Minus",
              "category": "linear",
              "parameters": [
                {
                  "name": "in_features",
                  "type": "number",
                  "defaultValue": 512,
                  "required": true,
                  "description": "Size of input features",
                  "min": 1
                },
                {
                  "name": "out_features",
                  "type": "number",
                  "defaultValue": 256,
                  "required": true,
                  "description": "Size of output features",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If set to False, the layer will not learn an additive bias"
                }
              ]
            }
          }
        },
        {
          "node_id": "output",
          "kind": "output",
          "op": "Output",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [],
          "metadata": {
            "layerType": {
              "id": "output",
              "name": "Output",
              "displayName": "Output",
              "description": "Model output node",
              "icon": "ArrowLeft",
              "category": "io",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "output",
                  "required": false,
                  "description": "Name for this output"
                }
              ]
            }
          }
        },
        {
          "node_id": "stage1.first",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage1",
            "moduleInstanceId": "stage1.first",
            "moduleTemplateId": "model::IdentityBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage1.first.conv1",
              "stage1.first.bn1",
              "stage1.first.relu1",
              "stage1.first.conv2",
              "stage1.first.bn2",
              "add@stage1.first#0",
              "stage1.first.relu_out"
            ],
            "moduleLayerCount": 7
          }
        },
        {
          "node_id": "stage1.second",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage1",
            "moduleInstanceId": "stage1.second",
            "moduleTemplateId": "model::IdentityBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage1.second.conv1",
              "stage1.second.bn1",
              "stage1.second.relu1",
              "stage1.second.conv2",
              "stage1.second.bn2",
              "add@stage1.second#0",
              "stage1.second.relu_out"
            ],
            "moduleLayerCount": 7
          }
        },
        {
          "node_id": "stage1.first.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.first.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.first.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.first.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.first.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "add@stage1.first#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.first.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage1.first"
          }
        },
        {
          "node_id": "stage1.second.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage1.second.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage1.second.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage1.second.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage1.second.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "add@stage1.second#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage1.second.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage1.second"
          }
        },
        {
          "node_id": "stage2.first",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage2",
            "moduleInstanceId": "stage2.first",
            "moduleTemplateId": "model::ProjectionBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage2.first.conv1",
              "stage2.first.bn1",
              "stage2.first.relu1",
              "stage2.first.conv2",
              "stage2.first.bn2",
              "stage2.first.shortcut",
              "stage2.first.shortcut_norm",
              "add@stage2.first#0",
              "stage2.first.relu_out"
            ],
            "moduleLayerCount": 9
          }
        },
        {
          "node_id": "stage2.second",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage2",
            "moduleInstanceId": "stage2.second",
            "moduleTemplateId": "model::IdentityBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage2.second.conv1",
              "stage2.second.bn1",
              "stage2.second.relu1",
              "stage2.second.conv2",
              "stage2.second.bn2",
              "add@stage2.second#0",
              "stage2.second.relu_out"
            ],
            "moduleLayerCount": 7
          }
        },
        {
          "node_id": "stage2.first.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "stride": 2,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.shortcut",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 1,
            "stride": 2,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.shortcut_norm",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "add@stage2.first#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.first.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage2.first"
          }
        },
        {
          "node_id": "stage2.second.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage2.second.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage2.second.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage2.second.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage2.second.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "add@stage2.second#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage2.second.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage2.second"
          }
        },
        {
          "node_id": "stage3.first",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage3",
            "moduleInstanceId": "stage3.first",
            "moduleTemplateId": "model::ProjectionBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage3.first.conv1",
              "stage3.first.bn1",
              "stage3.first.relu1",
              "stage3.first.conv2",
              "stage3.first.bn2",
              "stage3.first.shortcut",
              "stage3.first.shortcut_norm",
              "add@stage3.first#0",
              "stage3.first.relu_out"
            ],
            "moduleLayerCount": 9
          }
        },
        {
          "node_id": "stage3.second",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage3",
            "moduleInstanceId": "stage3.second",
            "moduleTemplateId": "model::IdentityBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage3.second.conv1",
              "stage3.second.bn1",
              "stage3.second.relu1",
              "stage3.second.conv2",
              "stage3.second.bn2",
              "add@stage3.second#0",
              "stage3.second.relu_out"
            ],
            "moduleLayerCount": 7
          }
        },
        {
          "node_id": "stage3.first.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "stride": 2,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.shortcut",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 1,
            "stride": 2,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.shortcut_norm",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "add@stage3.first#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.first.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage3.first"
          }
        },
        {
          "node_id": "stage3.second.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage3.second.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage3.second.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage3.second.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage3.second.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "add@stage3.second#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage3.second.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage3.second"
          }
        },
        {
          "node_id": "stage4.first",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage4",
            "moduleInstanceId": "stage4.first",
            "moduleTemplateId": "model::ProjectionBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage4.first.conv1",
              "stage4.first.bn1",
              "stage4.first.relu1",
              "stage4.first.conv2",
              "stage4.first.bn2",
              "stage4.first.shortcut",
              "stage4.first.shortcut_norm",
              "add@stage4.first#0",
              "stage4.first.relu_out"
            ],
            "moduleLayerCount": 9
          }
        },
        {
          "node_id": "stage4.second",
          "kind": "module",
          "op": "Module",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "module",
              "name": "Module",
              "displayName": "Module",
              "description": "Custom module group (nn.Module)",
              "icon": "Package",
              "category": "module",
              "parameters": [
                {
                  "name": "name",
                  "type": "string",
                  "defaultValue": "CustomModule",
                  "required": true,
                  "description": "Module class name"
                },
                {
                  "name": "description",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Module description"
                }
              ]
            },
            "parentId": "stage4",
            "moduleInstanceId": "stage4.second",
            "moduleTemplateId": "model::IdentityBlock",
            "isGroup": true,
            "moduleMembers": [
              "stage4.second.conv1",
              "stage4.second.bn1",
              "stage4.second.relu1",
              "stage4.second.conv2",
              "stage4.second.bn2",
              "add@stage4.second#0",
              "stage4.second.relu_out"
            ],
            "moduleLayerCount": 7
          }
        },
        {
          "node_id": "stage4.first.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "stride": 2,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.shortcut",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 1,
            "stride": 2,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.shortcut_norm",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "add@stage4.first#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.first.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage4.first"
          }
        },
        {
          "node_id": "stage4.second.conv1",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "stage4.second.bn1",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "stage4.second.relu1",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "stage4.second.conv2",
          "kind": "layer",
          "op": "Conv2d",
          "params": {
            "kernel_size": 3,
            "padding": 1,
            "bias": false
          },
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "conv2d",
              "name": "Conv2d",
              "displayName": "Conv2D",
              "description": "2D Convolutional Layer",
              "icon": "Grid3X3",
              "category": "conv",
              "parameters": [
                {
                  "name": "in_channels",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Number of input channels",
                  "min": 1
                },
                {
                  "name": "out_channels",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of output channels",
                  "min": 1
                },
                {
                  "name": "kernel_size",
                  "type": "number",
                  "defaultValue": 3,
                  "required": true,
                  "description": "Size of the convolving kernel",
                  "min": 1
                },
                {
                  "name": "stride",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Stride of the convolution",
                  "min": 1
                },
                {
                  "name": "padding",
                  "type": "number",
                  "defaultValue": 0,
                  "required": false,
                  "description": "Zero-padding added to both sides",
                  "min": 0
                },
                {
                  "name": "dilation",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Spacing between kernel elements",
                  "min": 1
                },
                {
                  "name": "groups",
                  "type": "number",
                  "defaultValue": 1,
                  "required": false,
                  "description": "Number of blocked connections from input to output channels",
                  "min": 1
                },
                {
                  "name": "bias",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, adds a learnable bias"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "stage4.second.bn2",
          "kind": "layer",
          "op": "BatchNorm2d",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "batchnorm2d",
              "name": "BatchNorm2d",
              "displayName": "BatchNorm2D",
              "description": "2D Batch Normalization",
              "icon": "Layers",
              "category": "norm",
              "parameters": [
                {
                  "name": "num_features",
                  "type": "number",
                  "defaultValue": 64,
                  "required": true,
                  "description": "Number of features from an expected input",
                  "min": 1
                },
                {
                  "name": "eps",
                  "type": "number",
                  "defaultValue": 0.00001,
                  "required": false,
                  "description": "A value added to the denominator for numerical stability",
                  "min": 0
                },
                {
                  "name": "momentum",
                  "type": "number",
                  "defaultValue": 0.1,
                  "required": false,
                  "description": "The value used for the running_mean and running_var computation",
                  "min": 0,
                  "max": 1
                },
                {
                  "name": "affine",
                  "type": "boolean",
                  "defaultValue": true,
                  "required": false,
                  "description": "If True, learnable affine parameters"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "add@stage4.second#0",
          "kind": "layer",
          "op": "torch.add",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "add",
              "name": "torch.add",
              "displayName": "torch.add",
              "description": "PyTorch add operation",
              "icon": "Activity",
              "category": "tensor",
              "parameters": [
                {
                  "name": "dim",
                  "type": "string",
                  "defaultValue": "",
                  "required": false,
                  "description": "Dimension(s) to apply the operation on"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        },
        {
          "node_id": "stage4.second.relu_out",
          "kind": "layer",
          "op": "ReLU",
          "params": {},
          "in_ports": [
            "x"
          ],
          "out_ports": [
            "y"
          ],
          "metadata": {
            "layerType": {
              "id": "relu",
              "name": "ReLU",
              "displayName": "ReLU",
              "description": "Rectified Linear Unit",
              "icon": "TrendingUp",
              "category": "activation",
              "parameters": [
                {
                  "name": "inplace",
                  "type": "boolean",
                  "defaultValue": false,
                  "required": false,
                  "description": "Can optionally do the operation in-place"
                }
              ]
            },
            "parentId": "stage4.second"
          }
        }
      ],
      "edges": [
        {
          "edge_id": "edge-1",
          "source_node_id": "stage1.first.conv1",
          "target_node_id": "stage1.first.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-2",
          "source_node_id": "stage1.first.bn1",
          "target_node_id": "stage1.first.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-3",
          "source_node_id": "stage1.first.relu1",
          "target_node_id": "stage1.first.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-4",
          "source_node_id": "stage1.first.conv2",
          "target_node_id": "stage1.first.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-5",
          "source_node_id": "stage1.first.bn2",
          "target_node_id": "add@stage1.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-6",
          "source_node_id": "add@stage1.first#0",
          "target_node_id": "stage1.first.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-7",
          "source_node_id": "stage1.second.conv1",
          "target_node_id": "stage1.second.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-8",
          "source_node_id": "stage1.second.bn1",
          "target_node_id": "stage1.second.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-9",
          "source_node_id": "stage1.second.relu1",
          "target_node_id": "stage1.second.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-10",
          "source_node_id": "stage1.second.conv2",
          "target_node_id": "stage1.second.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-11",
          "source_node_id": "stage1.second.bn2",
          "target_node_id": "add@stage1.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-12",
          "source_node_id": "add@stage1.second#0",
          "target_node_id": "stage1.second.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-13",
          "source_node_id": "stage1.first.relu_out",
          "target_node_id": "stage1.second.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-14",
          "source_node_id": "stage1.first.relu_out",
          "target_node_id": "add@stage1.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-15",
          "source_node_id": "stage1.first",
          "target_node_id": "stage1.second",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-16",
          "source_node_id": "stage2.first.conv1",
          "target_node_id": "stage2.first.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-17",
          "source_node_id": "stage2.first.bn1",
          "target_node_id": "stage2.first.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-18",
          "source_node_id": "stage2.first.relu1",
          "target_node_id": "stage2.first.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-19",
          "source_node_id": "stage2.first.conv2",
          "target_node_id": "stage2.first.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-20",
          "source_node_id": "stage2.first.shortcut",
          "target_node_id": "stage2.first.shortcut_norm",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-21",
          "source_node_id": "stage2.first.shortcut_norm",
          "target_node_id": "add@stage2.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-22",
          "source_node_id": "stage2.first.bn2",
          "target_node_id": "add@stage2.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-23",
          "source_node_id": "add@stage2.first#0",
          "target_node_id": "stage2.first.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-24",
          "source_node_id": "stage2.second.conv1",
          "target_node_id": "stage2.second.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-25",
          "source_node_id": "stage2.second.bn1",
          "target_node_id": "stage2.second.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-26",
          "source_node_id": "stage2.second.relu1",
          "target_node_id": "stage2.second.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-27",
          "source_node_id": "stage2.second.conv2",
          "target_node_id": "stage2.second.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-28",
          "source_node_id": "stage2.second.bn2",
          "target_node_id": "add@stage2.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-29",
          "source_node_id": "add@stage2.second#0",
          "target_node_id": "stage2.second.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-30",
          "source_node_id": "stage2.first.relu_out",
          "target_node_id": "stage2.second.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-31",
          "source_node_id": "stage2.first.relu_out",
          "target_node_id": "add@stage2.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-32",
          "source_node_id": "stage2.first",
          "target_node_id": "stage2.second",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-33",
          "source_node_id": "stage3.first.conv1",
          "target_node_id": "stage3.first.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-34",
          "source_node_id": "stage3.first.bn1",
          "target_node_id": "stage3.first.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-35",
          "source_node_id": "stage3.first.relu1",
          "target_node_id": "stage3.first.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-36",
          "source_node_id": "stage3.first.conv2",
          "target_node_id": "stage3.first.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-37",
          "source_node_id": "stage3.first.shortcut",
          "target_node_id": "stage3.first.shortcut_norm",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-38",
          "source_node_id": "stage3.first.shortcut_norm",
          "target_node_id": "add@stage3.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-39",
          "source_node_id": "stage3.first.bn2",
          "target_node_id": "add@stage3.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-40",
          "source_node_id": "add@stage3.first#0",
          "target_node_id": "stage3.first.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-41",
          "source_node_id": "stage3.second.conv1",
          "target_node_id": "stage3.second.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-42",
          "source_node_id": "stage3.second.bn1",
          "target_node_id": "stage3.second.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-43",
          "source_node_id": "stage3.second.relu1",
          "target_node_id": "stage3.second.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-44",
          "source_node_id": "stage3.second.conv2",
          "target_node_id": "stage3.second.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-45",
          "source_node_id": "stage3.second.bn2",
          "target_node_id": "add@stage3.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-46",
          "source_node_id": "add@stage3.second#0",
          "target_node_id": "stage3.second.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-47",
          "source_node_id": "stage3.first.relu_out",
          "target_node_id": "stage3.second.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-48",
          "source_node_id": "stage3.first.relu_out",
          "target_node_id": "add@stage3.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-49",
          "source_node_id": "stage3.first",
          "target_node_id": "stage3.second",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-50",
          "source_node_id": "stage4.first.conv1",
          "target_node_id": "stage4.first.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-51",
          "source_node_id": "stage4.first.bn1",
          "target_node_id": "stage4.first.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-52",
          "source_node_id": "stage4.first.relu1",
          "target_node_id": "stage4.first.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-53",
          "source_node_id": "stage4.first.conv2",
          "target_node_id": "stage4.first.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-54",
          "source_node_id": "stage4.first.shortcut",
          "target_node_id": "stage4.first.shortcut_norm",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-55",
          "source_node_id": "stage4.first.shortcut_norm",
          "target_node_id": "add@stage4.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-56",
          "source_node_id": "stage4.first.bn2",
          "target_node_id": "add@stage4.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-57",
          "source_node_id": "add@stage4.first#0",
          "target_node_id": "stage4.first.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-58",
          "source_node_id": "stage4.second.conv1",
          "target_node_id": "stage4.second.bn1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-59",
          "source_node_id": "stage4.second.bn1",
          "target_node_id": "stage4.second.relu1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-60",
          "source_node_id": "stage4.second.relu1",
          "target_node_id": "stage4.second.conv2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-61",
          "source_node_id": "stage4.second.conv2",
          "target_node_id": "stage4.second.bn2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-62",
          "source_node_id": "stage4.second.bn2",
          "target_node_id": "add@stage4.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-63",
          "source_node_id": "add@stage4.second#0",
          "target_node_id": "stage4.second.relu_out",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-64",
          "source_node_id": "stage4.first.relu_out",
          "target_node_id": "stage4.second.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-65",
          "source_node_id": "stage4.first.relu_out",
          "target_node_id": "add@stage4.second#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-66",
          "source_node_id": "stage4.first",
          "target_node_id": "stage4.second",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-67",
          "source_node_id": "input",
          "target_node_id": "stem",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-68",
          "source_node_id": "stem",
          "target_node_id": "stem_norm",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-69",
          "source_node_id": "stem_norm",
          "target_node_id": "stem_relu",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-70",
          "source_node_id": "stem_relu",
          "target_node_id": "pool",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-71",
          "source_node_id": "pool",
          "target_node_id": "stage1.first.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-72",
          "source_node_id": "pool",
          "target_node_id": "add@stage1.first#0",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-73",
          "source_node_id": "pool",
          "target_node_id": "stage1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-74",
          "source_node_id": "stage1.second.relu_out",
          "target_node_id": "stage2.first.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-75",
          "source_node_id": "stage1.second.relu_out",
          "target_node_id": "stage2.first.shortcut",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-76",
          "source_node_id": "stage1",
          "target_node_id": "stage2",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-77",
          "source_node_id": "stage2.second.relu_out",
          "target_node_id": "stage3.first.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-78",
          "source_node_id": "stage2.second.relu_out",
          "target_node_id": "stage3.first.shortcut",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-79",
          "source_node_id": "stage2",
          "target_node_id": "stage3",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-80",
          "source_node_id": "stage3.second.relu_out",
          "target_node_id": "stage4.first.conv1",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-81",
          "source_node_id": "stage3.second.relu_out",
          "target_node_id": "stage4.first.shortcut",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-82",
          "source_node_id": "stage3",
          "target_node_id": "stage4",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-83",
          "source_node_id": "stage4.second.relu_out",
          "target_node_id": "average",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-84",
          "source_node_id": "stage4",
          "target_node_id": "average",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-85",
          "source_node_id": "average",
          "target_node_id": "flatten",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-86",
          "source_node_id": "flatten",
          "target_node_id": "head",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        },
        {
          "edge_id": "edge-87",
          "source_node_id": "head",
          "target_node_id": "output",
          "source_port": "y",
          "target_port": "x",
          "metadata": {}
        }
      ],
      "inputs": [],
      "modules": [],
      "operations": [],
      "metadata": {}
    },
    "view": {
      "graph_id": "snapshot",
      "node_positions": {
        "input": {
          "x": 0,
          "y": 160
        },
        "stem": {
          "x": 340,
          "y": 160
        },
        "stem_norm": {
          "x": 680,
          "y": 160
        },
        "stem_relu": {
          "x": 1020,
          "y": 160
        },
        "pool": {
          "x": 1360,
          "y": 160
        },
        "stage1": {
          "x": 1700,
          "y": 160
        },
        "stage2": {
          "x": 2040,
          "y": 160
        },
        "stage3": {
          "x": 2380,
          "y": 160
        },
        "stage4": {
          "x": 2720,
          "y": 160
        },
        "average": {
          "x": 3060,
          "y": 160
        },
        "flatten": {
          "x": 3400,
          "y": 160
        },
        "head": {
          "x": 3740,
          "y": 160
        },
        "output": {
          "x": 4080,
          "y": 160
        },
        "stage1.first": {
          "x": 24,
          "y": 214
        },
        "stage1.second": {
          "x": 24,
          "y": 364
        },
        "stage1.first.conv1": {
          "x": 24,
          "y": 214
        },
        "stage1.first.bn1": {
          "x": 24,
          "y": 364
        },
        "stage1.first.relu1": {
          "x": 24,
          "y": 514
        },
        "stage1.first.conv2": {
          "x": 24,
          "y": 664
        },
        "stage1.first.bn2": {
          "x": 24,
          "y": 814
        },
        "add@stage1.first#0": {
          "x": 24,
          "y": 964
        },
        "stage1.first.relu_out": {
          "x": 24,
          "y": 1114
        },
        "stage1.second.conv1": {
          "x": 24,
          "y": 214
        },
        "stage1.second.bn1": {
          "x": 24,
          "y": 364
        },
        "stage1.second.relu1": {
          "x": 24,
          "y": 514
        },
        "stage1.second.conv2": {
          "x": 24,
          "y": 664
        },
        "stage1.second.bn2": {
          "x": 24,
          "y": 814
        },
        "add@stage1.second#0": {
          "x": 24,
          "y": 964
        },
        "stage1.second.relu_out": {
          "x": 24,
          "y": 1114
        },
        "stage2.first": {
          "x": 24,
          "y": 214
        },
        "stage2.second": {
          "x": 24,
          "y": 364
        },
        "stage2.first.conv1": {
          "x": 24,
          "y": 214
        },
        "stage2.first.bn1": {
          "x": 24,
          "y": 364
        },
        "stage2.first.relu1": {
          "x": 24,
          "y": 514
        },
        "stage2.first.conv2": {
          "x": 24,
          "y": 664
        },
        "stage2.first.bn2": {
          "x": 24,
          "y": 814
        },
        "stage2.first.shortcut": {
          "x": 24,
          "y": 964
        },
        "stage2.first.shortcut_norm": {
          "x": 24,
          "y": 1114
        },
        "add@stage2.first#0": {
          "x": 24,
          "y": 1264
        },
        "stage2.first.relu_out": {
          "x": 24,
          "y": 1414
        },
        "stage2.second.conv1": {
          "x": 24,
          "y": 214
        },
        "stage2.second.bn1": {
          "x": 24,
          "y": 364
        },
        "stage2.second.relu1": {
          "x": 24,
          "y": 514
        },
        "stage2.second.conv2": {
          "x": 24,
          "y": 664
        },
        "stage2.second.bn2": {
          "x": 24,
          "y": 814
        },
        "add@stage2.second#0": {
          "x": 24,
          "y": 964
        },
        "stage2.second.relu_out": {
          "x": 24,
          "y": 1114
        },
        "stage3.first": {
          "x": 24,
          "y": 214
        },
        "stage3.second": {
          "x": 24,
          "y": 364
        },
        "stage3.first.conv1": {
          "x": 24,
          "y": 214
        },
        "stage3.first.bn1": {
          "x": 24,
          "y": 364
        },
        "stage3.first.relu1": {
          "x": 24,
          "y": 514
        },
        "stage3.first.conv2": {
          "x": 24,
          "y": 664
        },
        "stage3.first.bn2": {
          "x": 24,
          "y": 814
        },
        "stage3.first.shortcut": {
          "x": 24,
          "y": 964
        },
        "stage3.first.shortcut_norm": {
          "x": 24,
          "y": 1114
        },
        "add@stage3.first#0": {
          "x": 24,
          "y": 1264
        },
        "stage3.first.relu_out": {
          "x": 24,
          "y": 1414
        },
        "stage3.second.conv1": {
          "x": 24,
          "y": 214
        },
        "stage3.second.bn1": {
          "x": 24,
          "y": 364
        },
        "stage3.second.relu1": {
          "x": 24,
          "y": 514
        },
        "stage3.second.conv2": {
          "x": 24,
          "y": 664
        },
        "stage3.second.bn2": {
          "x": 24,
          "y": 814
        },
        "add@stage3.second#0": {
          "x": 24,
          "y": 964
        },
        "stage3.second.relu_out": {
          "x": 24,
          "y": 1114
        },
        "stage4.first": {
          "x": 24,
          "y": 214
        },
        "stage4.second": {
          "x": 24,
          "y": 364
        },
        "stage4.first.conv1": {
          "x": 24,
          "y": 214
        },
        "stage4.first.bn1": {
          "x": 24,
          "y": 364
        },
        "stage4.first.relu1": {
          "x": 24,
          "y": 514
        },
        "stage4.first.conv2": {
          "x": 24,
          "y": 664
        },
        "stage4.first.bn2": {
          "x": 24,
          "y": 814
        },
        "stage4.first.shortcut": {
          "x": 24,
          "y": 964
        },
        "stage4.first.shortcut_norm": {
          "x": 24,
          "y": 1114
        },
        "add@stage4.first#0": {
          "x": 24,
          "y": 1264
        },
        "stage4.first.relu_out": {
          "x": 24,
          "y": 1414
        },
        "stage4.second.conv1": {
          "x": 24,
          "y": 214
        },
        "stage4.second.bn1": {
          "x": 24,
          "y": 364
        },
        "stage4.second.relu1": {
          "x": 24,
          "y": 514
        },
        "stage4.second.conv2": {
          "x": 24,
          "y": 664
        },
        "stage4.second.bn2": {
          "x": 24,
          "y": 814
        },
        "add@stage4.second#0": {
          "x": 24,
          "y": 964
        },
        "stage4.second.relu_out": {
          "x": 24,
          "y": 1114
        }
      },
      "collapsed_modules": [
        "stage1",
        "stage2",
        "stage3",
        "stage4",
        "stage1.first",
        "stage1.second",
        "stage2.first",
        "stage2.second",
        "stage3.first",
        "stage3.second",
        "stage4.first",
        "stage4.second"
      ],
      "selection": [],
      "layout": {}
    }
  },
  "snapshotId": "snapshot-6ab6334bb9a6fe15",
  "collaboration": {
    "walkthrough": {
      "title": "Follow shortcuts through eighteen layers",
      "steps": [
        {
          "id": "stem",
          "title": "Build a spatial feature stem",
          "note": "The stride-two 7×7 convolution, BatchNorm, ReLU and max pool reduce 64×64 inputs to eight 16×16 feature maps before the residual stages.",
          "view": {
            "camera": {
              "x": -7.5,
              "y": 26,
              "z": 1.25
            },
            "nodePositions": {
              "input": {
                "x": 0,
                "y": 160
              },
              "stem": {
                "x": 340,
                "y": 160
              },
              "stem_norm": {
                "x": 680,
                "y": 160
              },
              "stem_relu": {
                "x": 1020,
                "y": 160
              },
              "pool": {
                "x": 1360,
                "y": 160
              },
              "stage1": {
                "x": 1700,
                "y": 160
              },
              "stage2": {
                "x": 2040,
                "y": 160
              },
              "stage3": {
                "x": 2380,
                "y": 160
              },
              "stage4": {
                "x": 2720,
                "y": 160
              },
              "average": {
                "x": 3060,
                "y": 160
              },
              "flatten": {
                "x": 3400,
                "y": 160
              },
              "head": {
                "x": 3740,
                "y": 160
              },
              "output": {
                "x": 4080,
                "y": 160
              },
              "stage1.first": {
                "x": 24,
                "y": 214
              },
              "stage1.second": {
                "x": 24,
                "y": 364
              },
              "stage1.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.first.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.first#0": {
                "x": 24,
                "y": 964
              },
              "stage1.first.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage1.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.second#0": {
                "x": 24,
                "y": 964
              },
              "stage1.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage2.first": {
                "x": 24,
                "y": 214
              },
              "stage2.second": {
                "x": 24,
                "y": 364
              },
              "stage2.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage2.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage2.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage2.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage2.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage2.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage2.second#0": {
                "x": 24,
                "y": 964
              },
              "stage2.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage3.first": {
                "x": 24,
                "y": 214
              },
              "stage3.second": {
                "x": 24,
                "y": 364
              },
              "stage3.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage3.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage3.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage3.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage3.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage3.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage3.second#0": {
                "x": 24,
                "y": 964
              },
              "stage3.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage4.first": {
                "x": 24,
                "y": 214
              },
              "stage4.second": {
                "x": 24,
                "y": 364
              },
              "stage4.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage4.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage4.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage4.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage4.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage4.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage4.second#0": {
                "x": 24,
                "y": 964
              },
              "stage4.second.relu_out": {
                "x": 24,
                "y": 1114
              }
            },
            "expandedModuleIds": [],
            "selectedNodeIds": [
              "stem"
            ],
            "viewport": {
              "width": 1100,
              "height": 700
            }
          },
          "anchors": [
            {
              "target": {
                "kind": "node",
                "nodeId": "stem"
              },
              "snapshotId": "snapshot-6ab6334bb9a6fe15",
              "exportedAt": "2026-09-17T06:26:29.596489+00:00",
              "modelName": "ReducedResNet18",
              "context": "{\"connections\":[\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"input\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stem\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stem\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stem_norm\\\",\\\"targetPort\\\":\\\"x\\\"}\"],\"contents\":[],\"node\":{\"id\":\"stem\",\"kind\":\"layer\",\"op\":\"Conv2d\",\"params\":{\"bias\":false,\"in_channels\":3,\"kernel_size\":7,\"out_channels\":8,\"padding\":3,\"stride\":2}}}"
            }
          ]
        },
        {
          "id": "identity",
          "title": "Keep an identity shortcut around two convolutions",
          "note": "The first basic block preserves channels and resolution, so the input bypasses two 3×3 convolutions unchanged until addition. A ReLU follows the sum: with a zero residual branch the block returns ReLU(x).",
          "view": {
            "camera": {
              "x": 1011.769230769231,
              "y": -73.69230769230762,
              "z": 0.45614035087719296
            },
            "nodePositions": {
              "input": {
                "x": 0,
                "y": 160
              },
              "stem": {
                "x": 340,
                "y": 160
              },
              "stem_norm": {
                "x": 680,
                "y": 160
              },
              "stem_relu": {
                "x": 1020,
                "y": 160
              },
              "pool": {
                "x": 1360,
                "y": 160
              },
              "stage1": {
                "x": 1700,
                "y": 160
              },
              "stage2": {
                "x": 2040,
                "y": 160
              },
              "stage3": {
                "x": 2380,
                "y": 160
              },
              "stage4": {
                "x": 2720,
                "y": 160
              },
              "average": {
                "x": 3060,
                "y": 160
              },
              "flatten": {
                "x": 3400,
                "y": 160
              },
              "head": {
                "x": 3740,
                "y": 160
              },
              "output": {
                "x": 4080,
                "y": 160
              },
              "stage1.first": {
                "x": 24,
                "y": 214
              },
              "stage1.second": {
                "x": 24,
                "y": 364
              },
              "stage1.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.first.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.first#0": {
                "x": 24,
                "y": 964
              },
              "stage1.first.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage1.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.second#0": {
                "x": 24,
                "y": 964
              },
              "stage1.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage2.first": {
                "x": 24,
                "y": 214
              },
              "stage2.second": {
                "x": 24,
                "y": 364
              },
              "stage2.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage2.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage2.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage2.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage2.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage2.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage2.second#0": {
                "x": 24,
                "y": 964
              },
              "stage2.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage3.first": {
                "x": 24,
                "y": 214
              },
              "stage3.second": {
                "x": 24,
                "y": 364
              },
              "stage3.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage3.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage3.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage3.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage3.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage3.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage3.second#0": {
                "x": 24,
                "y": 964
              },
              "stage3.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage4.first": {
                "x": 24,
                "y": 214
              },
              "stage4.second": {
                "x": 24,
                "y": 364
              },
              "stage4.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage4.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage4.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage4.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage4.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage4.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage4.second#0": {
                "x": 24,
                "y": 964
              },
              "stage4.second.relu_out": {
                "x": 24,
                "y": 1114
              }
            },
            "expandedModuleIds": [
              "stage1",
              "stage1.first"
            ],
            "selectedNodeIds": [
              "stage1.first"
            ],
            "viewport": {
              "width": 1100,
              "height": 700
            }
          },
          "anchors": [
            {
              "target": {
                "kind": "node",
                "nodeId": "stage1.first"
              },
              "snapshotId": "snapshot-6ab6334bb9a6fe15",
              "exportedAt": "2026-09-17T06:26:29.596489+00:00",
              "modelName": "ReducedResNet18",
              "context": "{\"connections\":[\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"add@stage1.first#0\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.relu_out\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"pool\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.first#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"pool\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.conv1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.second\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.bn1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.relu1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.bn2\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.first#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.conv1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.bn1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.conv2\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.bn2\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.conv2\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.second#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.second.conv1\\\",\\\"targetPort\\\":\\\"x\\\"}\"],\"contents\":[\"{\\\"id\\\":\\\"add@stage1.first#0\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"torch.add\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.bn1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"BatchNorm2d\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.bn2\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"BatchNorm2d\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.conv1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"Conv2d\\\",\\\"params\\\":{\\\"bias\\\":false,\\\"kernel_size\\\":3,\\\"padding\\\":1},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.conv2\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"Conv2d\\\",\\\"params\\\":{\\\"bias\\\":false,\\\"kernel_size\\\":3,\\\"padding\\\":1},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.relu1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"ReLU\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.relu_out\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"ReLU\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\"],\"node\":{\"id\":\"stage1.first\",\"kind\":\"module\",\"op\":\"Module\",\"params\":{},\"parent\":\"stage1\"}}"
            }
          ]
        },
        {
          "id": "projection",
          "title": "Project when the dimensions change",
          "note": "At the next stage, channels double and spatial width halves. A stride-two 1×1 shortcut projection, followed by BatchNorm, makes its shape match the learned residual branch.",
          "view": {
            "camera": {
              "x": 308.5,
              "y": -747.5,
              "z": 1.25
            },
            "nodePositions": {
              "input": {
                "x": 0,
                "y": 160
              },
              "stem": {
                "x": 340,
                "y": 160
              },
              "stem_norm": {
                "x": 680,
                "y": 160
              },
              "stem_relu": {
                "x": 1020,
                "y": 160
              },
              "pool": {
                "x": 1360,
                "y": 160
              },
              "stage1": {
                "x": 1700,
                "y": 160
              },
              "stage2": {
                "x": 2040,
                "y": 160
              },
              "stage3": {
                "x": 2380,
                "y": 160
              },
              "stage4": {
                "x": 2720,
                "y": 160
              },
              "average": {
                "x": 3060,
                "y": 160
              },
              "flatten": {
                "x": 3400,
                "y": 160
              },
              "head": {
                "x": 3740,
                "y": 160
              },
              "output": {
                "x": 4080,
                "y": 160
              },
              "stage1.first": {
                "x": 24,
                "y": 214
              },
              "stage1.second": {
                "x": 24,
                "y": 364
              },
              "stage1.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.first.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.first#0": {
                "x": 24,
                "y": 964
              },
              "stage1.first.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage1.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.second#0": {
                "x": 24,
                "y": 964
              },
              "stage1.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage2.first": {
                "x": 24,
                "y": 214
              },
              "stage2.second": {
                "x": 24,
                "y": 364
              },
              "stage2.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage2.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage2.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage2.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage2.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage2.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage2.second#0": {
                "x": 24,
                "y": 964
              },
              "stage2.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage3.first": {
                "x": 24,
                "y": 214
              },
              "stage3.second": {
                "x": 24,
                "y": 364
              },
              "stage3.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage3.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage3.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage3.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage3.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage3.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage3.second#0": {
                "x": 24,
                "y": 964
              },
              "stage3.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage4.first": {
                "x": 24,
                "y": 214
              },
              "stage4.second": {
                "x": 24,
                "y": 364
              },
              "stage4.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage4.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage4.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage4.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage4.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage4.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage4.second#0": {
                "x": 24,
                "y": 964
              },
              "stage4.second.relu_out": {
                "x": 24,
                "y": 1114
              }
            },
            "expandedModuleIds": [
              "stage2",
              "stage2.first"
            ],
            "selectedNodeIds": [
              "stage2.first.shortcut"
            ],
            "viewport": {
              "width": 1100,
              "height": 700
            }
          },
          "anchors": [
            {
              "target": {
                "kind": "node",
                "nodeId": "stage2.first.shortcut"
              },
              "snapshotId": "snapshot-6ab6334bb9a6fe15",
              "exportedAt": "2026-09-17T06:26:29.596489+00:00",
              "modelName": "ReducedResNet18",
              "context": "{\"connections\":[\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.second.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage2.first.shortcut\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage2.first.shortcut\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage2.first.shortcut_norm\\\",\\\"targetPort\\\":\\\"x\\\"}\"],\"contents\":[],\"node\":{\"id\":\"stage2.first.shortcut\",\"kind\":\"layer\",\"op\":\"Conv2d\",\"params\":{\"bias\":false,\"kernel_size\":1,\"stride\":2},\"parent\":\"stage2.first\"}}"
            }
          ]
        },
        {
          "id": "average",
          "title": "Aggregate spatial features before classification",
          "note": "Four stages of two blocks leave 64 channels at 2×2. Global average pooling reduces each channel to one value, giving a 64-feature vector for the ten-class head.",
          "view": {
            "camera": {
              "x": -2727.5,
              "y": 60,
              "z": 1.25
            },
            "nodePositions": {
              "input": {
                "x": 0,
                "y": 160
              },
              "stem": {
                "x": 340,
                "y": 160
              },
              "stem_norm": {
                "x": 680,
                "y": 160
              },
              "stem_relu": {
                "x": 1020,
                "y": 160
              },
              "pool": {
                "x": 1360,
                "y": 160
              },
              "stage1": {
                "x": 1700,
                "y": 160
              },
              "stage2": {
                "x": 2040,
                "y": 160
              },
              "stage3": {
                "x": 2380,
                "y": 160
              },
              "stage4": {
                "x": 2720,
                "y": 160
              },
              "average": {
                "x": 3060,
                "y": 160
              },
              "flatten": {
                "x": 3400,
                "y": 160
              },
              "head": {
                "x": 3740,
                "y": 160
              },
              "output": {
                "x": 4080,
                "y": 160
              },
              "stage1.first": {
                "x": 24,
                "y": 214
              },
              "stage1.second": {
                "x": 24,
                "y": 364
              },
              "stage1.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.first.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.first#0": {
                "x": 24,
                "y": 964
              },
              "stage1.first.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage1.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage1.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage1.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage1.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage1.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage1.second#0": {
                "x": 24,
                "y": 964
              },
              "stage1.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage2.first": {
                "x": 24,
                "y": 214
              },
              "stage2.second": {
                "x": 24,
                "y": 364
              },
              "stage2.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage2.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage2.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage2.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage2.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage2.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage2.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage2.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage2.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage2.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage2.second#0": {
                "x": 24,
                "y": 964
              },
              "stage2.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage3.first": {
                "x": 24,
                "y": 214
              },
              "stage3.second": {
                "x": 24,
                "y": 364
              },
              "stage3.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage3.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage3.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage3.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage3.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage3.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage3.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage3.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage3.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage3.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage3.second#0": {
                "x": 24,
                "y": 964
              },
              "stage3.second.relu_out": {
                "x": 24,
                "y": 1114
              },
              "stage4.first": {
                "x": 24,
                "y": 214
              },
              "stage4.second": {
                "x": 24,
                "y": 364
              },
              "stage4.first.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.first.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.first.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.first.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.first.bn2": {
                "x": 24,
                "y": 814
              },
              "stage4.first.shortcut": {
                "x": 24,
                "y": 964
              },
              "stage4.first.shortcut_norm": {
                "x": 24,
                "y": 1114
              },
              "add@stage4.first#0": {
                "x": 24,
                "y": 1264
              },
              "stage4.first.relu_out": {
                "x": 24,
                "y": 1414
              },
              "stage4.second.conv1": {
                "x": 24,
                "y": 214
              },
              "stage4.second.bn1": {
                "x": 24,
                "y": 364
              },
              "stage4.second.relu1": {
                "x": 24,
                "y": 514
              },
              "stage4.second.conv2": {
                "x": 24,
                "y": 664
              },
              "stage4.second.bn2": {
                "x": 24,
                "y": 814
              },
              "add@stage4.second#0": {
                "x": 24,
                "y": 964
              },
              "stage4.second.relu_out": {
                "x": 24,
                "y": 1114
              }
            },
            "expandedModuleIds": [],
            "selectedNodeIds": [
              "average"
            ],
            "viewport": {
              "width": 1100,
              "height": 700
            }
          },
          "anchors": [
            {
              "target": {
                "kind": "node",
                "nodeId": "average"
              },
              "snapshotId": "snapshot-6ab6334bb9a6fe15",
              "exportedAt": "2026-09-17T06:26:29.596489+00:00",
              "modelName": "ReducedResNet18",
              "context": "{\"connections\":[\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"average\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"flatten\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage4\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"average\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage4.second.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"average\\\",\\\"targetPort\\\":\\\"x\\\"}\"],\"contents\":[],\"node\":{\"id\":\"average\",\"kind\":\"layer\",\"op\":\"AdaptiveAvgPool2d\",\"params\":{\"output_size\":1}}}"
            }
          ]
        }
      ]
    },
    "threads": [],
    "savedViews": [
      {
        "id": "identity",
        "title": "Keep an identity shortcut around two convolutions",
        "note": "The first basic block preserves channels and resolution, so the input bypasses two 3×3 convolutions unchanged until addition. A ReLU follows the sum: with a zero residual branch the block returns ReLU(x).",
        "view": {
          "camera": {
            "x": 1011.769230769231,
            "y": -73.69230769230762,
            "z": 0.45614035087719296
          },
          "nodePositions": {
            "input": {
              "x": 0,
              "y": 160
            },
            "stem": {
              "x": 340,
              "y": 160
            },
            "stem_norm": {
              "x": 680,
              "y": 160
            },
            "stem_relu": {
              "x": 1020,
              "y": 160
            },
            "pool": {
              "x": 1360,
              "y": 160
            },
            "stage1": {
              "x": 1700,
              "y": 160
            },
            "stage2": {
              "x": 2040,
              "y": 160
            },
            "stage3": {
              "x": 2380,
              "y": 160
            },
            "stage4": {
              "x": 2720,
              "y": 160
            },
            "average": {
              "x": 3060,
              "y": 160
            },
            "flatten": {
              "x": 3400,
              "y": 160
            },
            "head": {
              "x": 3740,
              "y": 160
            },
            "output": {
              "x": 4080,
              "y": 160
            },
            "stage1.first": {
              "x": 24,
              "y": 214
            },
            "stage1.second": {
              "x": 24,
              "y": 364
            },
            "stage1.first.conv1": {
              "x": 24,
              "y": 214
            },
            "stage1.first.bn1": {
              "x": 24,
              "y": 364
            },
            "stage1.first.relu1": {
              "x": 24,
              "y": 514
            },
            "stage1.first.conv2": {
              "x": 24,
              "y": 664
            },
            "stage1.first.bn2": {
              "x": 24,
              "y": 814
            },
            "add@stage1.first#0": {
              "x": 24,
              "y": 964
            },
            "stage1.first.relu_out": {
              "x": 24,
              "y": 1114
            },
            "stage1.second.conv1": {
              "x": 24,
              "y": 214
            },
            "stage1.second.bn1": {
              "x": 24,
              "y": 364
            },
            "stage1.second.relu1": {
              "x": 24,
              "y": 514
            },
            "stage1.second.conv2": {
              "x": 24,
              "y": 664
            },
            "stage1.second.bn2": {
              "x": 24,
              "y": 814
            },
            "add@stage1.second#0": {
              "x": 24,
              "y": 964
            },
            "stage1.second.relu_out": {
              "x": 24,
              "y": 1114
            },
            "stage2.first": {
              "x": 24,
              "y": 214
            },
            "stage2.second": {
              "x": 24,
              "y": 364
            },
            "stage2.first.conv1": {
              "x": 24,
              "y": 214
            },
            "stage2.first.bn1": {
              "x": 24,
              "y": 364
            },
            "stage2.first.relu1": {
              "x": 24,
              "y": 514
            },
            "stage2.first.conv2": {
              "x": 24,
              "y": 664
            },
            "stage2.first.bn2": {
              "x": 24,
              "y": 814
            },
            "stage2.first.shortcut": {
              "x": 24,
              "y": 964
            },
            "stage2.first.shortcut_norm": {
              "x": 24,
              "y": 1114
            },
            "add@stage2.first#0": {
              "x": 24,
              "y": 1264
            },
            "stage2.first.relu_out": {
              "x": 24,
              "y": 1414
            },
            "stage2.second.conv1": {
              "x": 24,
              "y": 214
            },
            "stage2.second.bn1": {
              "x": 24,
              "y": 364
            },
            "stage2.second.relu1": {
              "x": 24,
              "y": 514
            },
            "stage2.second.conv2": {
              "x": 24,
              "y": 664
            },
            "stage2.second.bn2": {
              "x": 24,
              "y": 814
            },
            "add@stage2.second#0": {
              "x": 24,
              "y": 964
            },
            "stage2.second.relu_out": {
              "x": 24,
              "y": 1114
            },
            "stage3.first": {
              "x": 24,
              "y": 214
            },
            "stage3.second": {
              "x": 24,
              "y": 364
            },
            "stage3.first.conv1": {
              "x": 24,
              "y": 214
            },
            "stage3.first.bn1": {
              "x": 24,
              "y": 364
            },
            "stage3.first.relu1": {
              "x": 24,
              "y": 514
            },
            "stage3.first.conv2": {
              "x": 24,
              "y": 664
            },
            "stage3.first.bn2": {
              "x": 24,
              "y": 814
            },
            "stage3.first.shortcut": {
              "x": 24,
              "y": 964
            },
            "stage3.first.shortcut_norm": {
              "x": 24,
              "y": 1114
            },
            "add@stage3.first#0": {
              "x": 24,
              "y": 1264
            },
            "stage3.first.relu_out": {
              "x": 24,
              "y": 1414
            },
            "stage3.second.conv1": {
              "x": 24,
              "y": 214
            },
            "stage3.second.bn1": {
              "x": 24,
              "y": 364
            },
            "stage3.second.relu1": {
              "x": 24,
              "y": 514
            },
            "stage3.second.conv2": {
              "x": 24,
              "y": 664
            },
            "stage3.second.bn2": {
              "x": 24,
              "y": 814
            },
            "add@stage3.second#0": {
              "x": 24,
              "y": 964
            },
            "stage3.second.relu_out": {
              "x": 24,
              "y": 1114
            },
            "stage4.first": {
              "x": 24,
              "y": 214
            },
            "stage4.second": {
              "x": 24,
              "y": 364
            },
            "stage4.first.conv1": {
              "x": 24,
              "y": 214
            },
            "stage4.first.bn1": {
              "x": 24,
              "y": 364
            },
            "stage4.first.relu1": {
              "x": 24,
              "y": 514
            },
            "stage4.first.conv2": {
              "x": 24,
              "y": 664
            },
            "stage4.first.bn2": {
              "x": 24,
              "y": 814
            },
            "stage4.first.shortcut": {
              "x": 24,
              "y": 964
            },
            "stage4.first.shortcut_norm": {
              "x": 24,
              "y": 1114
            },
            "add@stage4.first#0": {
              "x": 24,
              "y": 1264
            },
            "stage4.first.relu_out": {
              "x": 24,
              "y": 1414
            },
            "stage4.second.conv1": {
              "x": 24,
              "y": 214
            },
            "stage4.second.bn1": {
              "x": 24,
              "y": 364
            },
            "stage4.second.relu1": {
              "x": 24,
              "y": 514
            },
            "stage4.second.conv2": {
              "x": 24,
              "y": 664
            },
            "stage4.second.bn2": {
              "x": 24,
              "y": 814
            },
            "add@stage4.second#0": {
              "x": 24,
              "y": 964
            },
            "stage4.second.relu_out": {
              "x": 24,
              "y": 1114
            }
          },
          "expandedModuleIds": [
            "stage1",
            "stage1.first"
          ],
          "selectedNodeIds": [
            "stage1.first"
          ],
          "viewport": {
            "width": 1100,
            "height": 700
          }
        },
        "anchors": [
          {
            "target": {
              "kind": "node",
              "nodeId": "stage1.first"
            },
            "snapshotId": "snapshot-6ab6334bb9a6fe15",
            "exportedAt": "2026-09-17T06:26:29.596489+00:00",
            "modelName": "ReducedResNet18",
            "context": "{\"connections\":[\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"add@stage1.first#0\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.relu_out\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"pool\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.first#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"pool\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.conv1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.second\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.bn1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.relu1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.bn2\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.first#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.conv1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.bn1\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.conv2\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.bn2\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu1\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.first.conv2\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"add@stage1.second#0\\\",\\\"targetPort\\\":\\\"x\\\"}\",\"{\\\"kind\\\":\\\"edge\\\",\\\"source\\\":\\\"stage1.first.relu_out\\\",\\\"sourcePort\\\":\\\"y\\\",\\\"target\\\":\\\"stage1.second.conv1\\\",\\\"targetPort\\\":\\\"x\\\"}\"],\"contents\":[\"{\\\"id\\\":\\\"add@stage1.first#0\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"torch.add\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.bn1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"BatchNorm2d\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.bn2\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"BatchNorm2d\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.conv1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"Conv2d\\\",\\\"params\\\":{\\\"bias\\\":false,\\\"kernel_size\\\":3,\\\"padding\\\":1},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.conv2\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"Conv2d\\\",\\\"params\\\":{\\\"bias\\\":false,\\\"kernel_size\\\":3,\\\"padding\\\":1},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.relu1\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"ReLU\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\",\"{\\\"id\\\":\\\"stage1.first.relu_out\\\",\\\"kind\\\":\\\"layer\\\",\\\"op\\\":\\\"ReLU\\\",\\\"params\\\":{},\\\"parent\\\":\\\"stage1.first\\\"}\"],\"node\":{\"id\":\"stage1.first\",\"kind\":\"module\",\"op\":\"Module\",\"params\":{},\"parent\":\"stage1\"}}"
          }
        ]
      }
    ],
    "openingViewId": "identity"
  }
}
