Class DropoutWrapper
Inherits From: RNNCell
Aliases:
- Class
tf.contrib.rnn.DropoutWrapper
- Class
tf.nn.rnn_cell.DropoutWrapper
Defined in tensorflow/python/ops/rnn_cell_impl.py
.
Operator adding dropout to inputs and outputs of the given cell.
__init__
__init__(
cell,
input_keep_prob=1.0,
output_keep_prob=1.0,
state_keep_prob=1.0,
variational_recurrent=False,
input_size=None,
dtype=None,
seed=None,
dropout_state_filter_visitor=None
)
Create a cell with added input, state, and/or output dropout.
If variational_recurrent
is set to True
(NOT the default behavior),
then the same dropout mask is applied at every step, as described in:
Y. Gal, Z Ghahramani. "A Theoretically Grounded Application of Dropout in Recurrent Neural Networks". https://arxiv.org/abs/1512.05287
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
a DropoutWrapper
is never modified. This behavior is described in the
above article.
Args:
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 whenstate_keep_prob
is in(0, 1)
are also determined by the argumentdropout_state_filter_visitor
(e.g. by default dropout is never applied to thec
component of anLSTMStateTuple
).variational_recurrent
: Python bool. IfTrue
, then the same dropout pattern is applied across all time steps per run call. If this parameter is set,input_size
must be provided.input_size
: (optional) (possibly nested tuple of)TensorShape
objects containing the depth(s) of the input tensors expected to be passed in to theDropoutWrapper
. Required and used iffvariational_recurrent = True
andinput_keep_prob < 1
.dtype
: (optional) Thedtype
of the input, state, and output tensors. Required and used iffvariational_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 returnsTrue
, dropout is applied across this sublevel. If the function returnsFalse
, dropout is not applied across this entire sublevel. Default behavior: perform dropout on all terms except the memory (c
) state ofLSTMCellState
objects, and don't try to apply dropout toTensorArray
objects: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
Raises:
TypeError
: ifcell
is not anRNNCell
, orkeep_state_fn
is provided but notcallable
.ValueError
: if any of the keep_probs are not between 0 and 1.
Properties
activity_regularizer
Optional regularizer function for the output of this layer.
dtype
graph
input
Retrieves the input tensor(s) of a layer.
Only applicable if the layer has exactly one input, i.e. if it is connected to one incoming layer.
Returns:
Input tensor or list of input tensors.
Raises:
AttributeError
: if the layer is connected to more than one incoming layers.
Raises:
RuntimeError
: If called in Eager mode.AttributeError
: If no inbound nodes are found.
input_mask
Retrieves the input mask tensor(s) of a layer.
Only applicable if the layer has exactly one inbound node, i.e. if it is connected to one incoming layer.
Returns:
Input mask tensor (potentially None) or list of input mask tensors.
Raises:
AttributeError
: if the layer is connected to more than one incoming layers.
input_shape
Retrieves the input shape(s) of a layer.
Only applicable if the layer has exactly one input, i.e. if it is connected to one incoming layer, or if all inputs have the same shape.
Returns:
Input shape, as an integer shape tuple (or list of shape tuples, one tuple per input tensor).
Raises:
AttributeError
: if the layer has no defined input_shape.RuntimeError
: if called in Eager mode.
losses
Losses which are associated with this Layer
.
Variable regularization tensors are created when this property is accessed,
so it is eager safe: accessing losses
under a tf.GradientTape
will
propagate gradients back to the corresponding variables.
Returns:
A list of tensors.
name
non_trainable_variables
non_trainable_weights
output
Retrieves the output tensor(s) of a layer.
Only applicable if the layer has exactly one output, i.e. if it is connected to one incoming layer.
Returns:
Output tensor or list of output tensors.
Raises:
AttributeError
: if the layer is connected to more than one incoming layers.RuntimeError
: if called in Eager mode.
output_mask
Retrieves the output mask tensor(s) of a layer.
Only applicable if the layer has exactly one inbound node, i.e. if it is connected to one incoming layer.
Returns:
Output mask tensor (potentially None) or list of output mask tensors.
Raises:
AttributeError
: if the layer is connected to more than one incoming layers.
output_shape
Retrieves the output shape(s) of a layer.
Only applicable if the layer has one output, or if all outputs have the same shape.
Returns:
Output shape, as an integer shape tuple (or list of shape tuples, one tuple per output tensor).
Raises:
AttributeError
: if the layer has no defined output shape.RuntimeError
: if called in Eager mode.
output_size
Integer or TensorShape: size of outputs produced by this cell.
scope_name
state_size
size(s) of state(s) used by this cell.
It can be represented by an Integer, a TensorShape or a tuple of Integers or TensorShapes.
trainable_variables
trainable_weights
updates
variables
Returns the list of all layer variables/weights.
Alias of self.weights
.
Returns:
A list of variables.
weights
Returns the list of all layer variables/weights.
Returns:
A list of variables.
wrapped_cell
Methods
tf.nn.rnn_cell.DropoutWrapper.__call__
__call__(
inputs,
state,
scope=None
)
Run the cell with the declared dropouts.
tf.nn.rnn_cell.DropoutWrapper.__deepcopy__
__deepcopy__(memo)
tf.nn.rnn_cell.DropoutWrapper.__setattr__
__setattr__(
name,
value
)
Implement setattr(self, name, value).
tf.nn.rnn_cell.DropoutWrapper.apply
apply(
inputs,
*args,
**kwargs
)
Apply the layer on a input.
This is an alias of self.__call__
.
Arguments:
inputs
: Input tensor(s).*args
: additional positional arguments to be passed toself.call
.**kwargs
: additional keyword arguments to be passed toself.call
.
Returns:
Output tensor(s).
tf.nn.rnn_cell.DropoutWrapper.build
build(_)
Creates the variables of the layer (optional, for subclass implementers).
This is a method that implementers of subclasses of Layer
or Model
can override if they need a state-creation step in-between
layer instantiation and layer call.
This is typically used to create the weights of Layer
subclasses.
Arguments:
input_shape
: Instance ofTensorShape
, or list of instances ofTensorShape
if the layer expects a list of inputs (one instance per input).
tf.nn.rnn_cell.DropoutWrapper.compute_mask
compute_mask(
inputs,
mask=None
)
Computes an output mask tensor.
Arguments:
inputs
: Tensor or list of tensors.mask
: Tensor or list of tensors.
Returns:
None or a tensor (or list of tensors, one per output tensor of the layer).
tf.nn.rnn_cell.DropoutWrapper.compute_output_shape
compute_output_shape(input_shape)
Computes the output shape of the layer.
Assumes that the layer will be built to match that input shape provided.
Arguments:
input_shape
: Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the layer). Shape tuples can include None for free dimensions, instead of an integer.
Returns:
An input shape tuple.
tf.nn.rnn_cell.DropoutWrapper.count_params
count_params()
Count the total number of scalars composing the weights.
Returns:
An integer count.
Raises:
ValueError
: if the layer isn't yet built (in which case its weights aren't yet defined).
tf.nn.rnn_cell.DropoutWrapper.from_config
from_config(
cls,
config
)
Creates a layer from its config.
This method is the reverse of get_config
,
capable of instantiating the same layer from the config
dictionary. It does not handle layer connectivity
(handled by Network), nor weights (handled by set_weights
).
Arguments:
config
: A Python dictionary, typically the output of get_config.
Returns:
A layer instance.
tf.nn.rnn_cell.DropoutWrapper.get_config
get_config()
Returns the config of the layer.
A layer config is a Python dictionary (serializable) containing the configuration of a layer. The same layer can be reinstantiated later (without its trained weights) from this configuration.
The config of a layer does not include connectivity
information, nor the layer class name. These are handled
by Network
(one layer of abstraction above).
Returns:
Python dictionary.
tf.nn.rnn_cell.DropoutWrapper.get_initial_state
get_initial_state(
inputs=None,
batch_size=None,
dtype=None
)
tf.nn.rnn_cell.DropoutWrapper.get_input_at
get_input_at(node_index)
Retrieves the input tensor(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A tensor (or list of tensors if the layer has multiple inputs).
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_input_mask_at
get_input_mask_at(node_index)
Retrieves the input mask tensor(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A mask tensor (or list of tensors if the layer has multiple inputs).
tf.nn.rnn_cell.DropoutWrapper.get_input_shape_at
get_input_shape_at(node_index)
Retrieves the input shape(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A shape tuple (or list of shape tuples if the layer has multiple inputs).
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_losses_for
get_losses_for(inputs)
Retrieves losses relevant to a specific set of inputs.
Arguments:
inputs
: Input tensor or list/tuple of input tensors.
Returns:
List of loss tensors of the layer that depend on inputs
.
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_output_at
get_output_at(node_index)
Retrieves the output tensor(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A tensor (or list of tensors if the layer has multiple outputs).
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_output_mask_at
get_output_mask_at(node_index)
Retrieves the output mask tensor(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A mask tensor (or list of tensors if the layer has multiple outputs).
tf.nn.rnn_cell.DropoutWrapper.get_output_shape_at
get_output_shape_at(node_index)
Retrieves the output shape(s) of a layer at a given node.
Arguments:
node_index
: Integer, index of the node from which to retrieve the attribute. E.g.node_index=0
will correspond to the first time the layer was called.
Returns:
A shape tuple (or list of shape tuples if the layer has multiple outputs).
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_updates_for
get_updates_for(inputs)
Retrieves updates relevant to a specific set of inputs.
Arguments:
inputs
: Input tensor or list/tuple of input tensors.
Returns:
List of update ops of the layer that depend on inputs
.
Raises:
RuntimeError
: If called in Eager mode.
tf.nn.rnn_cell.DropoutWrapper.get_weights
get_weights()
Returns the current weights of the layer.
Returns:
Weights values as a list of numpy arrays.
tf.nn.rnn_cell.DropoutWrapper.set_weights
set_weights(weights)
Sets the weights of the layer, from Numpy arrays.
Arguments:
weights
: a list of Numpy arrays. The number of arrays and their shape must match number of the dimensions of the weights of the layer (i.e. it should match the output ofget_weights
).
Raises:
ValueError
: If the provided weights list does not match the layer's specifications.
tf.nn.rnn_cell.DropoutWrapper.zero_state
zero_state(
batch_size,
dtype
)
Return zero-filled state tensor(s).
Args:
batch_size
: int, float, or unit Tensor representing the batch size.dtype
: the data type to use for the state.
Returns:
If state_size
is an int or TensorShape, then the return value is a
N-D
tensor of shape [batch_size, state_size]
filled with zeros.
If state_size
is a nested list or tuple, then the return value is
a nested list or tuple (of the same structure) of 2-D
tensors with
the shapes [batch_size, s]
for each s in state_size
.