code: def test_partial_eval_graph_conv(self):
      mm = torch.jit.freeze(
          torch.jit.script(nn.Conv2d(16, 33, 3, stride=2).eval())
      )
      shape_compute_graph = torch._C._jit_pass_propagate_shapes_on_graph_and_build_compute(
          mm.graph
      )
      output_sizes = (
          mm.graph.findNode("aten::conv2d")
          .output()
          .type()
          .symbolic_sizes()
      )
      # calculating 0, 2 and 3 index
      for i in [0, 2, 3]:
          self.assertTrue(output_sizes[i] < 0)
      self.assertTrue(output_sizes[1] >= 0)
      g = shape_compute_graph.partial_eval_shape_graph()
      # to make into a jit function cant have multiple outputs
      g.makeMultiOutputIntoTuple()
      func = torch._C._create_function_from_graph(
          "partial_eval_graph", g
      )
      inp = torch.randn(20, 16, 5, 10)
      output = func([20, 16, 5, 10])
      output_eager = list(mm(inp).size())
      for o, oe in zip(output, output_eager[0:1] + output_eager[2:]):
          self.assertEqual(o, oe)
  
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 20 for calling the TestSymbolicShapeAnalysis obj's underlying member method code with example usage: obj.test_partial_eval_graph_conv() without return types