code: def __init__(self, has_batchnorm=False):
      # https://keras.io/examples/vision/mnist_convnet/
      conv = 3
      # inter_chan, out_chan = 32, 64
      inter_chan, out_chan = 8, 16  # for speed
      self.c1 = Tensor.scaled_uniform(inter_chan, 1, conv, conv)
      self.c2 = Tensor.scaled_uniform(out_chan, inter_chan, conv, conv)
      self.l1 = Tensor.scaled_uniform(out_chan * 5 * 5, 10)
      if has_batchnorm:
          self.bn1 = BatchNorm2d(inter_chan)
          self.bn2 = BatchNorm2d(out_chan)
      else:
          self.bn1, self.bn2 = lambda x: x, lambda x: x
  
imports: import unittest
  import numpy
  from tinygrad.nn.state import get_parameters
  from tinygrad.tensor import Tensor
  from tinygrad.nn import optim, BatchNorm2d
  from extra.training import train, evaluate
  from extra.datasets import fetch_mnist
label_desc: Use image node_id 1 to create a new TinyConvNet object  with example: obj = TinyConvNet(has_batchnorm)