class_docstr: A pre-trained GoogLeNet model provided by BVLC.
  
  When you specify the path of the pre-trained chainer model serialized as
  a ``.npz`` file in the constructor, this chain model automatically
  initializes all the parameters with it.
  This model would be useful when you want to extract a semantic feature
  vector per image, or fine-tune the model on a different dataset.
  
  If you want to manually convert the pre-trained caffemodel to a chainer
  model that can be specified in the constructor,
  please use ``convert_caffemodel_to_npz`` classmethod instead.
  
  GoogLeNet, which is also called Inception-v1, is an architecture of
  convolutional neural network proposed in 2014. This model is relatively
  lightweight and requires small memory footprint during training compared
  with modern architectures such as ResNet. Therefore, if you fine-tune your
  network based on a model pre-trained by Imagenet and need to train it with
  large batch size, GoogLeNet may be useful. On the other hand, if you just
  want an off-the-shelf classifier, we recommend that you use ResNet50 or
  other models since they are more accurate than GoogLeNet.
  
  The original model is provided here:
  `<https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet>`_
  
  Args:
      pretrained_model (str): the destination of the pre-trained
          chainer model serialized as a ``.npz`` file.
          If this argument is specified as ``auto``,
          it automatically downloads the caffemodel from the internet.
          Note that in this case the converted chainer model is stored
          on ``$CHAINER_DATASET_ROOT/pfnet/chainer/models`` directory,
          where ``$CHAINER_DATASET_ROOT`` is set as
          ``$HOME/.chainer/dataset`` unless you specify another value
          as a environment variable. The converted chainer model is
          automatically used from the second time.
          If the argument is specified as ``None``, all the parameters
          are not initialized by the pre-trained model, but the default
          initializer used in BVLC, i.e.,
          ``chainer.initializers.LeCunUniform(scale=1.0)``.
          Note that, in Caffe, when weight_filler is specified as
          "xavier" type without variance_norm parameter, the weights are
          initialized by Uniform(-s, s), where
          :math:`s = \sqrt{\frac{3}{fan_{in}}}` and :math:`fan_{in}` is the
          number of input units. This corresponds to LeCunUniform in Chainer
          but not GlorotUniform.
  
  Attributes:
      available_layers (list of str): The list of available layer names
          used by ``forward`` and ``extract`` methods.
class_docstr_tok: ["A","pre-trained","GoogLeNet","model","provided","by","BVLC",".","When","you","specify","the","path","of","the","pre-trained","chainer","model","serialized","as","a","``",".npz","``","file","in","the","constructor",",","this","chain","model","automatically","initializes","all","the","parameters","with","it",".","This","model","would","be","useful","when","you","want","to","extract","a","semantic","feature","vector","per","image",",","or","fine-tune","the","model","on","a","different","dataset",".","If","you","want","to","manually","convert","the","pre-trained","caffemodel","to","a","chainer","model","that","can","be","specified","in","the","constructor",",","please","use","``","convert_caffemodel_to_npz","``","classmethod","instead",".","GoogLeNet",",","which","is","also","called","Inception-v1",",","is","an","architecture","of","convolutional","neural","network","proposed","in","2014",".","This","model","is","relatively","lightweight","and","requires","small","memory","footprint","during","training","compared","with","modern","architectures","such","as","ResNet",".","Therefore",",","if","you","fine-tune","your","network","based","on","a","model","pre-trained","by","Imagenet","and","need","to","train","it","with","large","batch","size",",","GoogLeNet","may","be","useful",".","On","the","other","hand",",","if","you","just","want","an","off-the-shelf","classifier",",","we","recommend","that","you","use","ResNet50","or","other","models","since","they","are","more","accurate","than","GoogLeNet",".","The","original","model","is","provided","here",":","`","<","https",":","\/\/github.com\/BVLC\/caffe\/tree\/master\/models\/bvlc_googlenet",">","`","_","Args",":","pretrained_model","(","str",")",":","the","destination","of","the","pre-trained","chainer","model","serialized","as","a","``",".npz","``","file",".","If","this","argument","is","specified","as","``","auto","``",",","it","automatically","downloads","the","caffemodel","from","the","internet",".","Note","that","in","this","case","the","converted","chainer","model","is","stored","on","``","$","CHAINER_DATASET_ROOT\/pfnet\/chainer\/models","``","directory",",","where","``","$","CHAINER_DATASET_ROOT","``","is","set","as","``","$","HOME\/.chainer\/dataset","``","unless","you","specify","another","value","as","a","environment","variable",".","The","converted","chainer","model","is","automatically","used","from","the","second","time",".","If","the","argument","is","specified","as","``","None","``",",","all","the","parameters","are","not","initialized","by","the","pre-trained","model",",","but","the","default","initializer","used","in","BVLC",",","i.e.",",","``","chainer.initializers.LeCunUniform","(","scale=1.0",")","``",".","Note","that",",","in","Caffe",",","when","weight_filler","is","specified","as","``","xavier","''","type","without","variance_norm","parameter",",","the","weights","are","initialized","by","Uniform","(","-s",",","s",")",",","where",":","math",":","`","s","=","\\sqrt","{","\\frac","{","3","}","{","fan_","{","in","}","}","}","`","and",":","math",":","`","fan_","{","in","}","`","is","the","number","of","input","units",".","This","corresponds","to","LeCunUniform","in","Chainer","but","not","GlorotUniform",".","Attributes",":","available_layers","(","list","of","str",")",":","The","list","of","available","layer","names","used","by","``","forward","``","and","``","extract","``","methods","."]
code: def functions(self):
      return collections.OrderedDict(
          [
              ("conv1", [self.conv1, relu]),
              (
                  "pool1",
                  [_max_pooling_2d, _local_response_normalization],
              ),
              ("conv2_reduce", [self.conv2_reduce, relu]),
              (
                  "conv2",
                  [self.conv2, relu, _local_response_normalization],
              ),
              ("pool2", [_max_pooling_2d]),
              ("inception_3a", [self.inc3a]),
              ("inception_3b", [self.inc3b]),
              ("pool3", [_max_pooling_2d]),
              ("inception_4a", [self.inc4a]),
              ("inception_4b", [self.inc4b]),
              ("inception_4c", [self.inc4c]),
              ("inception_4d", [self.inc4d]),
              ("inception_4e", [self.inc4e]),
              ("pool4", [_max_pooling_2d]),
              ("inception_5a", [self.inc5a]),
              ("inception_5b", [self.inc5b]),
              ("pool5", [_average_pooling_2d_k7]),
              ("loss3_fc", [_dropout, self.loss3_fc]),
              ("prob", [softmax]),
              # Since usually the following outputs are not used, they are put
              # after 'prob' to be skipped for efficiency.
              (
                  "loss1_fc2",
                  [
                      _average_pooling_2d_k5,
                      self.loss1_conv,
                      relu,
                      self.loss1_fc1,
                      relu,
                      self.loss1_fc2,
                  ],
              ),
              (
                  "loss2_fc2",
                  [
                      _average_pooling_2d_k5,
                      self.loss2_conv,
                      relu,
                      self.loss2_fc1,
                      relu,
                      self.loss2_fc2,
                  ],
              ),
          ]
      )
  
imports: import collections
  import os
  import sys
  import numpy
  import chainer
  from chainer.dataset.convert import concat_examples
  from chainer.dataset import download
  from chainer import function
  from chainer.functions.activation.relu import relu
  from chainer.functions.activation.softmax import softmax
  from chainer.functions.array.reshape import reshape
  from chainer.functions.math.average import average
  from chainer.functions.noise.dropout import dropout
  from chainer.functions.normalization.local_response_normalization import local_response_normalization
  from chainer.functions.pooling.average_pooling_2d import average_pooling_2d
  from chainer.functions.pooling.max_pooling_nd import max_pooling_2d
  from chainer.initializers import constant
  from chainer.initializers import uniform
  from chainer import link
  from chainer.links.connection.convolution_2d import Convolution2D
  from chainer.links.connection.inception import Inception
  from chainer.links.connection.linear import Linear
  from chainer.serializers import npz
  from chainer.utils import argument
  from chainer.utils import imgproc
  from chainer.variable import Variable
label_desc: Use image node_id 2 for calling the GoogLeNet obj's underlying member method code with example usage: obj.functions() and returns: collections