class_docstr: Dropout layer. It randomly switches of (multiplies by zero)
  input values, where probability to be switched per each value
  can be controlled with the ``proba`` parameter. For example,
  ``proba=0.2`` will mean that only 20% of the input values will
  be multiplied by 0 and 80% of the will be unchanged.
  
  It's important to note that output from the dropout is controlled by
  the ``training`` parameter in the ``output`` method. Dropout
  will be applied only in cases when ``training=True`` propagated
  through the network, otherwise it will act as an identity.
  
  Parameters
  ----------
  proba : float
      Fraction of the input units to drop. Value needs to be
      between ``0`` and ``1``.
  
  {Identity.name}
  
  Methods
  -------
  {Identity.Methods}
  
  Attributes
  ----------
  {Identity.Attributes}
  
  See Also
  --------
  :layer:`DropBlock` : DropBlock layer.
  
  References
  ----------
  [1]  Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever,
       Ruslan Salakhutdinov, Dropout: a simple way to prevent neural
       networks from overfitting, 2014.
  
  Examples
  --------
  >>> from neupy.layers import *
  >>> network = join(
  ...     Input(10),
  ...     Relu(5) >> Dropout(0.5),
  ...     Relu(5) >> Dropout(0.5),
  ...     Sigmoid(1),
  ... )
  >>> network
  (?, 10) -> [... 6 layers ...] -> (?, 1)
class_docstr_tok: ["Dropout","layer",".","It","randomly","switches","of","(","multiplies","by","zero",")","input","values",",","where","probability","to","be","switched","per","each","value","can","be","controlled","with","the","``","proba","``","parameter",".","For","example",",","``","proba=0.2","``","will","mean","that","only","20","%","of","the","input","values","will","be","multiplied","by","0","and","80","%","of","the","will","be","unchanged",".","It","'s","important","to","note","that","output","from","the","dropout","is","controlled","by","the","``","training","``","parameter","in","the","``","output","``","method",".","Dropout","will","be","applied","only","in","cases","when","``","training=True","``","propagated","through","the","network",",","otherwise","it","will","act","as","an","identity",".","Parameters","--","--","--","--","--","proba",":","float","Fraction","of","the","input","units","to","drop",".","Value","needs","to","be","between","``","0","``","and","``","1","``",".","{","Identity.name","}","Methods","--","--","--","-","{","Identity.Methods","}","Attributes","--","--","--","--","--","{","Identity.Attributes","}","See","Also","--","--","--","--",":","layer",":","`","DropBlock","`",":","DropBlock","layer",".","References","--","--","--","--","--","[","1","]","Nitish","Srivastava",",","Geoffrey","Hinton",",","Alex","Krizhevsky",",","Ilya","Sutskever",",","Ruslan","Salakhutdinov",",","Dropout",":","a","simple","way","to","prevent","neural","networks","from","overfitting",",","2014",".","Examples","--","--","--","--",">",">",">","from","neupy.layers","import","*",">",">",">","network","=","join","(","...","Input","(","10",")",",","...","Relu","(","5",")",">",">","Dropout","(","0.5",")",",","...","Relu","(","5",")",">",">","Dropout","(","0.5",")",",","...","Sigmoid","(","1",")",",","...",")",">",">",">","network","(","?",",","10",")","-",">","[","...","6","layers","...","]","-",">","(","?",",","1",")"]
code: def output(self, input_value, training=False):
      if not training:
          return input_value
      return tf.nn.dropout(input_value, keep_prob=(1.0 - self.proba))
  
file_path: neupy/neupy/layers/stochastic.py
imports: import tensorflow
  from neupy.utils import asfloat
  from neupy.exceptions import LayerConnectionError
  from neupy.core.properties import ProperFractionProperty, NumberProperty, TypedListProperty
  from .base import Identity
label_desc: Use image node_id 2 for calling the Dropout obj's underlying member method code with example usage: obj.output(input_value, training) and returns: tf, input_value