class_docstr: VGG architectures for 11, 13, 16 layers.
  
  Args:
      num_layers (int): Number of layers chosen from 11, 13, 16.
  
  The following is a list of string that can be specified to ``use_up_to`` option in ``__call__`` method;
  
  * ``'classifier'`` (default): The output of the final affine layer for classification.
  * ``'pool'``: The output of the final global average pooling.
  * ``'lastconv'``: The input of the final global average pooling without ReLU activation.
  * ``'lastconv+relu'``: Network up to ``'lastconv'`` followed by ReLU activation.
  * ``'lastfeature'``: Network up to one layer before ``'classifier'``, but without activation.
  
  References:
      * `Simonyan and Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition.
        <https://arxiv.org/pdf/1409.1556>`_
class_docstr_tok: ["VGG","architectures","for","11",",","13",",","16","layers",".","Args",":","num_layers","(","int",")",":","Number","of","layers","chosen","from","11",",","13",",","16",".","The","following","is","a","list","of","string","that","can","be","specified","to","``","use_up_to","``","option","in","``","__call__","``","method",";","*","``","'classifier","'","``","(","default",")",":","The","output","of","the","final","affine","layer","for","classification",".","*","``","'pool","'","``",":","The","output","of","the","final","global","average","pooling",".","*","``","'lastconv","'","``",":","The","input","of","the","final","global","average","pooling","without","ReLU","activation",".","*","``","'lastconv+relu","'","``",":","Network","up","to","``","'lastconv","'","``","followed","by","ReLU","activation",".","*","``","'lastfeature","'","``",":","Network","up","to","one","layer","before","``","'classifier","'","``",",","but","without","activation",".","References",":","*","`","Simonyan","and","Zisserman",",","Very","Deep","Convolutional","Networks","for","Large-Scale","Image","Recognition",".","<","https",":","\/\/arxiv.org\/pdf\/1409.1556",">","`","_"]
code: def __init__(self, num_layers=11):
      # Check validity of num_layers
      set_num_layers = set((11, 13, 16))
      assert (
          num_layers in set_num_layers
      ), "num_layers must be chosen from {}".format(set_num_layers)
      self.num_layers = num_layers
  
      # Load nnp
      self._load_nnp(
          "VGG-{}.nnp".format(num_layers),
          "VGG-{0}/VGG-{0}.nnp".format(num_layers),
      )
  
      self._KEY_VARIABLE = {
          "classifier": "VGG{}/Affine_3".format(num_layers),
          "pool": "VGG{}/MaxPooling_5".format(num_layers),
          "lastconv": "VGG16/Convolution_13"
          if num_layers == 16
          else "VGG{}/Convolution_12".format(num_layers),
          "lastconv+relu": "VGG16/ReLU_13"
          if num_layers == 16
          else "VGG{}/ReLU_12".format(num_layers),
          "lastfeature": "VGG{}/Affine_2".format(num_layers),
      }
  
file_path: nnabla/python/src/nnabla/models/imagenet/vgg.py
imports: from __future__ import absolute_import
  from nnabla.utils.nnp_graph import NnpNetworkPass
  from .base import ImageNetBase
label_desc: Use image node_id 1 to create a new VGG object from inherited base classes: ImageNetBase with example: obj = VGG(num_layers)