code: def get_vgg_net(num_conv_layers_per_block=4, cnn_layer_labels=None):
      """Returns a VGG net."""
      cnn_layer_labels = (
          cnn_layer_labels
          if cnn_layer_labels is not None
          else get_cnn_layer_labels()
      )
      layer_labels = [
          "ip",
          "conv3",
          "conv3",
          "max-pool",
          "conv3",
          "conv3",
          "max-pool",
      ]
      num_filters_each_layer = [None, 64, 64, None, 128, 128, None]
      # Now create the blocks
      block_filter_sizes = [128, 256, 512]
      for bfs in block_filter_sizes:
          layer_labels.extend(
              ["conv3" for _ in range(num_conv_layers_per_block)]
              + ["max-pool"]
          )
          num_filters_each_layer.extend(
              [bfs] * num_conv_layers_per_block + [None]
          )
      layer_labels.extend(["fc", "fc", "fc", "softmax", "op"])
      num_filters_each_layer.extend([128, 256, 512, None, None])
      num_layers = len(layer_labels)
      # Construct the connectivity matrix
      conn_mat = get_feedforward_adj_mat(num_layers)
      strides = [
          (1 if is_a_conv_layer_label(ll) else None)
          for ll in layer_labels
      ]
      vgg = ConvNeuralNetwork(
          layer_labels,
          conn_mat,
          num_filters_each_layer,
          strides,
          cnn_layer_labels,
      )
      return vgg
  
imports: import numpy
  from scipy.sparse import dok_matrix
  from .neural_network import ConvNeuralNetwork, MultiLayerPerceptron, get_cnn_layer_labels, get_mlp_layer_labels, is_a_conv_layer_label
  from .nn_modifiers import NNModifier
  from ..utils.general_utils import get_dok_mat_with_set_coords
label_desc: Use image node_id 2 for calling a global function with example usage: get_vgg_net(num_conv_layers_per_block, cnn_layer_labels) and returns: vgg