class_docstr: A VGG-style network for very small images.
  
  This model implementation is ported from Chainer official example:
  https://github.com/chainer/chainer/blob/master/examples/cifar/models/VGG.py
  
  Args:
      comm: ChainerMN communicator.
      class_labels (int): The number of class labels.
code: def __init__(self, comm, class_labels=10):
      super(VGG, self).__init__()
      self.comm = comm
  
      with self.init_scope():
          self.block1_1 = Block(comm, 3, 64, 3)
          self.block1_2 = Block(comm, 64, 64, 3)
          self.block2_1 = Block(comm, 64, 128, 3)
          self.block2_2 = Block(comm, 128, 128, 3)
          self.block3_1 = Block(comm, 128, 256, 3)
          self.block3_2 = Block(comm, 256, 256, 3)
          self.block3_3 = Block(comm, 256, 256, 3)
          self.block4_1 = Block(comm, 256, 512, 3)
          self.block4_2 = Block(comm, 512, 512, 3)
          self.block4_3 = Block(comm, 512, 512, 3)
          self.block5_1 = Block(comm, 512, 512, 3)
          self.block5_2 = Block(comm, 512, 512, 3)
          self.block5_3 = Block(comm, 512, 512, 3)
          self.fc1 = L.Linear(None, 512, nobias=True)
          self.bn_fc1 = L.BatchNormalization(512)
          self.fc2 = L.Linear(None, class_labels, nobias=True)
  
imports: from __future__ import print_function
  import chainer
  import chainer.functions
  import chainer.links
  import chainermn.functions
  import numpy
label_desc: Use image node_id 1 to create a new VGG object from inherited base classes: chainer with example: obj = VGG(comm, class_labels)