|View source on GitHub|
Operator adding dropout to inputs and outputs of the given cell.
__init__( *args, **kwargs )
Create a cell with added input, state, and/or output dropout.
variational_recurrent is set to
True (NOT the default behavior),
then the same dropout mask is applied at every step, as described in:
A Theoretically Grounded Application of Dropout in Recurrent
Neural Networks. Y. Gal, Z. Ghahramani.
Otherwise a different dropout mask is applied at every time step.
Note, by default (unless a custom
dropout_state_filter is provided),
the memory state (
c component of any
LSTMStateTuple) passing through
DropoutWrapper is never modified. This behavior is described in the
cell: an RNNCell, a projection to output_size is added to it.
input_keep_prob: unit Tensor or float between 0 and 1, input keep probability; if it is constant and 1, no input dropout will be added.
output_keep_prob: unit Tensor or float between 0 and 1, output keep probability; if it is constant and 1, no output dropout will be added.
state_keep_prob: unit Tensor or float between 0 and 1, output keep probability; if it is constant and 1, no output dropout will be added. State dropout is performed on the outgoing states of the cell. Note the state components to which dropout is applied when
(0, 1)are also determined by the argument
dropout_state_filter_visitor(e.g. by default dropout is never applied to the
ccomponent of an
variational_recurrent: Python bool. If
True, then the same dropout pattern is applied across all time steps per run call. If this parameter is set,
input_sizemust be provided.
input_size: (optional) (possibly nested tuple of)
TensorShapeobjects containing the depth(s) of the input tensors expected to be passed in to the
DropoutWrapper. Required and used iff
variational_recurrent = Trueand
input_keep_prob < 1.
dtype: (optional) The
dtypeof the input, state, and output tensors. Required and used iff
variational_recurrent = True.
seed: (optional) integer, the randomness seed.
dropout_state_filter_visitor: (optional), default: (see below). Function that takes any hierarchical level of the state and returns a scalar or depth=1 structure of Python booleans describing which terms in the state should be dropped out. In addition, if the function returns
True, dropout is applied across this sublevel. If the function returns
False, dropout is not applied across this entire sublevel. Default behavior: perform dropout on all terms except the memory (
c) state of
LSTMCellStateobjects, and don't try to apply dropout to
def dropout_state_filter_visitor(s): if isinstance(s, LSTMCellState): # Never perform dropout on the c state. return LSTMCellState(c=False, h=True) elif isinstance(s, TensorArray): return False return True
cellis not an
keep_state_fnis provided but not
ValueError: if any of the keep_probs are not between 0 and 1.
get_initial_state( inputs=None, batch_size=None, dtype=None )
zero_state( batch_size, dtype )