code: def fprop(self, x, dropout=False, dropout_dict=None, **kwargs):
      
      include_prob = self.include_prob
      if dropout_dict is not None:
        assert dropout
        if self.name in dropout_dict:
          include_prob = dropout_dict[self.name]
      if dropout:
        return tf.nn.dropout(x, include_prob)
      return x
docs: Forward propagation as either no-op or dropping random units.
      :param x: The input to the layer
      :param dropout: bool specifying whether to drop units
      :param dropout_dict: dict
          This dictionary is usually not needed.
          In rare cases, generally for research purposes, this dictionary
          makes it possible to run forward propagation with a different
          dropout include probability.
          This dictionary should be passed as a named argument to the MLP
          class, which will then pass it to *all* layers' fprop methods.
          Other layers will just receive this as an ignored kwargs entry.
          Each dropout layer looks up its own name in this dictionary
          to read out its include probability.