class_docstr: Image captioning model.
code: def __init__(
      self,
      vocab_size,
      hidden_size=512,
      rnn="lstm",
      dropout_ratio=0.5,
      finetune_feat_extractor=False,
      ignore_label=-1,
  ):
      super(ImageCaptionModel, self).__init__()
  
      if rnn == "lstm":
          LanguageModel = LSTMLanguageModel
      elif rnn == "nsteplstm":
          LanguageModel = NStepLSTMLanguageModel
      else:
          raise ValueError("Invalid RNN type.")
  
      with self.init_scope():
          self.feat_extractor = VGG16FeatureExtractor()
          self.lang_model = LanguageModel(
              vocab_size,
              hidden_size,
              dropout_ratio=dropout_ratio,
              ignore_label=ignore_label,
          )
  
      self.finetune_feat_extractor = finetune_feat_extractor
  
imports: import numpy
  import chainer
  from chainer import functions
  from chainer import initializers
  from chainer import links
  from chainer import reporter
  from chainer import Variable
label_desc: Use image node_id 1 to create a new ImageCaptionModel object from inherited base classes: chainer with example: obj = ImageCaptionModel(vocab_size, hidden_size, rnn, dropout_ratio, finetune_feat_extractor, ignore_label)