code: def __init__(self, num_classes):
      super(CNNModel, self).__init__()
      self.input_size = 28
      self.dimension = 4
      self.num_classes = num_classes
  
      self.layer1 = layer.Conv2d(16, kernel_size=3, activation="RELU")
      self.bn1 = layer.BatchNorm2d()
      self.layer2 = layer.Conv2d(16, kernel_size=3, activation="RELU")
      self.bn2 = layer.BatchNorm2d()
      self.pooling2 = layer.MaxPool2d(kernel_size=2, stride=2)
      self.layer3 = layer.Conv2d(64, kernel_size=3, activation="RELU")
      self.bn3 = layer.BatchNorm2d()
      self.layer4 = layer.Conv2d(64, kernel_size=3, activation="RELU")
      self.bn4 = layer.BatchNorm2d()
      self.layer5 = layer.Conv2d(
          64, kernel_size=3, padding=1, activation="RELU"
      )
      self.bn5 = layer.BatchNorm2d()
      self.pooling5 = layer.MaxPool2d(kernel_size=2, stride=2)
  
      self.flatten = layer.Flatten()
  
      self.linear1 = layer.Linear(128)
      self.linear2 = layer.Linear(128)
      self.linear3 = layer.Linear(self.num_classes)
  
      self.relu = layer.ReLU()
  
      self.softmax_cross_entropy = layer.SoftMaxCrossEntropy()
      self.dropout = layer.Dropout(ratio=0.3)
  
imports: import json
  import os
  import time
  from glob import glob
  import numpy
  from PIL import Image
  from singa import device, layer, model, opt, tensor
  from tqdm import tqdm
  from transforms import Compose, Normalize, ToTensor
label_desc: Use image node_id 1 to create a new CNNModel object from inherited base classes: model with example: obj = CNNModel(num_classes)