super().init()
              self.linear = torch.nn.Linear(5, 5)
          def forward(self, x):
              x = self.linear(x)
              return x
  class M(torch.nn.Module):
      def __init__(self):
          super().__init__()
          self.linear = torch.nn.Linear(5, 5)
          self.sub = Submodule()

      def forward(self, x):
          x = self.linear(x)
          x = self.sub(x) + x
          return x

  # initialize a floating point model
  float_model = M().train()
  # (optional, but preferred) load the weights from pretrained model
  # float_model.load_weights(...)

  # define the training loop for quantization aware training
  def train_loop(model, train_data):
      model.train()
      for image, target in data_loader:
          ...

  # qconfig is the configuration for how we insert observers for a particular
  # operator
  # qconfig = get_default_qconfig("fbgemm")
