code: def test_partial_eval_stitching(self):
      conv1 = torch.nn.Conv2d(
          3,
          64,
          kernel_size=(7, 7),
          stride=(2, 2),
          padding=(3, 3),
          bias=False,
      )
      max_pool = torch.nn.MaxPool2d(
          kernel_size=3,
          stride=2,
          padding=1,
          dilation=1,
          ceil_mode=False,
      )
      conv2 = nn.Conv2d(
          64,
          128,
          kernel_size=(3, 3),
          stride=(2, 2),
          padding=(1, 1),
          bias=False,
      )
  
      mod = torch.jit.freeze(
          torch.jit.script(nn.Sequential(conv1, max_pool, conv2).eval())
      )
  
      conv1_output = conv1(torch.rand(1, 3, 224, 224))
      max_pool_output = max_pool(conv1_output)
      conv2_output = conv2(max_pool_output)
  
      shape_compute_graph = torch._C._jit_pass_propagate_shapes_on_graph_and_build_compute(
          mod.graph
      )
      nodes = [mod.graph.findNode("aten::max_pool2d")] + list(
          mod.graph.findAllNodes("aten::conv2d")
      )
      output_shapes = [
          max_pool_output.size(),
          conv1_output.size(),
          conv2_output.size(),
      ]
      self.checkSymShapeCompute(
          shape_compute_graph, nodes, output_shapes, ([1, 3, 224, 224],)
      )
  
imports: import operator
  import unittest
  from textwrap import dedent
  import torch
  from torch import nn, Tensor
  from torch.testing import FileCheck
  from torch.testing._internal.common_methods_invocations import sample_inputs_cat_concat
  from torch.testing._internal.common_utils import make_tensor
  from torch.testing._internal.jit_utils import JitTestCase, execWrapper
  from typing import List, Any
label_desc: Use image node_id 22 for calling the TestSymbolicShapeAnalysis obj's underlying member method code with example usage: obj.test_partial_eval_stitching() without return types