运算符将 dropout 添加到给定单元的输入和输出。
继承自:Module
用法
tf.nn.RNNCellDropoutWrapper(
*args, **kwargs
)
参数
-
cell
一个 RNNCell,一个到 output_size 的投影被添加到它。 -
input_keep_prob
unit Tensor or float 在0和1之间,输入保持概率;如果它是常数且为 1,则不会添加输入 dropout。 -
output_keep_prob
unit Tensor or float 0和1之间,输出保持概率;如果它是常数且为 1,则不会添加输出 dropout。 -
state_keep_prob
unit Tensor or float 0和1之间,输出保持概率;如果它是常数且为 1,则不会添加输出 dropout。状态丢失是在单元的输出状态上执行的。注意何时应用 dropout 的状态组件state_keep_prob
在(0, 1)
也由参数决定dropout_state_filter_visitor
(例如,默认情况下,dropout 永远不会应用于c
的组成部分LSTMStateTuple
)。 -
variational_recurrent
Python 布尔值。如果True
,然后在每次运行调用的所有时间步中应用相同的 dropout 模式。如果设置了这个参数,input_size
必须提供。 -
input_size
(可选)(可能是嵌套的元组)TensorShape
包含预期要传入的输入张量的深度的对象DropoutWrapper
.需要和使用当且当variational_recurrent = True
和input_keep_prob < 1
. -
dtype
(可选)dtype
输入、状态和输出张量。需要和使用当且当variational_recurrent = True
. -
seed
(可选)整数,随机种子。 -
dropout_state_filter_visitor
(可选),默认值:(见下文)。采用状态的任何层次级别并返回 Python 布尔值的标量或深度 = 1 结构的函数,该结构说明了应删除状态中的哪些项。此外,如果函数返回True
,则会在此子级别上应用 dropout。如果函数返回False
,则不会在整个子级别上应用 dropout。默认行为:对除LSTMCellState
对象的内存(c
)状态之外的所有条件执行 dropout,并且不要尝试将 dropout 应用于TensorArray
对象: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
-
**kwargs
基础层的关键字参数字典。
抛出
-
TypeError
如果cell
不是RNNCell
,或者提供了keep_state_fn
但未提供callable
。 -
ValueError
如果任何 keep_probs 不在 0 和 1 之间。
属性
-
activity_regularizer
该层输出的可选正则化函数。 -
compute_dtype
层计算的 dtype。这相当于
Layer.dtype_policy.compute_dtype
。除非使用混合精度,否则这与Layer.dtype
相同,即权重的 dtype。层会自动将其输入转换为计算 dtype,这会导致计算和输出也位于计算 dtype 中。这是由
Layer.call
中的基础层类完成的,因此如果实现自己的层,则不必插入这些转换。当
compute_dtype
为 float16 或 bfloat16 以保持数值稳定性时,层通常会以更高的精度执行某些内部计算。在这种情况下,输出通常仍然是 float16 或 bfloat16。 -
dtype
层权重的 dtype。这相当于
Layer.dtype_policy.variable_dtype
。除非使用混合精度,否则这与Layer.compute_dtype
相同,即图层计算的 dtype。 -
dtype_policy
与该层关联的 dtype 策略。这是
tf.keras.mixed_precision.Policy
的一个实例。 -
dynamic
图层是否动态(eager-only);在构造函数中设置。 -
input
检索层的输入张量。仅当该层只有一个输入时才适用,即如果它连接到一个传入层。
-
input_spec
InputSpec
说明该层输入格式的实例。创建图层子类时,可以设置
self.input_spec
以使图层在调用时运行输入兼容性检查。考虑Conv2D
层:它只能在秩为 4 的单个输入张量上调用。因此,您可以在__init__()
中设置:self.input_spec = tf.keras.layers.InputSpec(ndim=4)
现在,如果您尝试在不是 4 级的输入上调用图层(例如,形状为
(2,)
的输入,它将引发 nicely-formatted 错误:ValueError:Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=1. Full shape received:[2]
可以通过
input_spec
指定的输入检查包括:- 结构(例如,单个输入、2 个输入的列表等)
- Shape
- 排名(ndim)
- Dtype
有关详细信息,请参阅
tf.keras.layers.InputSpec
。 -
losses
使用添加的损失列表add_loss()
API。访问此属性时会创建变量正则化张量,因此非常安全:访问
tf.GradientTape
下的losses
会将梯度传播回相应的变量。class MyLayer(tf.keras.layers.Layer): def call(self, inputs): self.add_loss(tf.abs(tf.reduce_mean(inputs))) return inputs l = MyLayer() l(np.ones((10, 1))) l.losses [1.0]
inputs = tf.keras.Input(shape=(10,)) x = tf.keras.layers.Dense(10)(inputs) outputs = tf.keras.layers.Dense(1)(x) model = tf.keras.Model(inputs, outputs) # Activity regularization. len(model.losses) 0 model.add_loss(tf.abs(tf.reduce_mean(x))) len(model.losses) 1
inputs = tf.keras.Input(shape=(10,)) d = tf.keras.layers.Dense(10, kernel_initializer='ones') x = d(inputs) outputs = tf.keras.layers.Dense(1)(x) model = tf.keras.Model(inputs, outputs) # Weight regularization. model.add_loss(lambda:tf.reduce_mean(d.kernel)) model.losses [<tf.Tensor:shape=(), dtype=float32, numpy=1.0>]
-
metrics
使用添加的指标列表add_metric()
API。input = tf.keras.layers.Input(shape=(3,)) d = tf.keras.layers.Dense(2) output = d(input) d.add_metric(tf.reduce_max(output), name='max') d.add_metric(tf.reduce_min(output), name='min') [m.name for m in d.metrics] ['max', 'min']
-
non_trainable_weights
该层跟踪的所有不可训练权重的列表。不可训练的权重在训练期间不会更新。它们预计将在
call()
中手动更新。 -
output
检索层的输出张量。仅当该层只有一个输出时才适用,即如果它连接到一个传入层。
-
output_size
-
state_size
-
supports_masking
该层是否支持使用compute_mask
计算掩码。 -
trainable
-
trainable_weights
该层跟踪的所有可训练权重的列表。可训练权重在训练期间通过梯度下降进行更新。
-
variable_dtype
Layer.dtype
的别名,权重的 dtype。 -
weights
返回所有层变量/权重的列表。 -
wrapped_cell
相关用法
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.add_metric用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.add_loss用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.get_weights用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.add_loss用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.add_metric用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.get_weights用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.add_metric用法及代码示例
- Python tf.nn.RNNCellResidualWrapper用法及代码示例
- Python tf.nn.embedding_lookup_sparse用法及代码示例
- Python tf.nn.dropout用法及代码示例
- Python tf.nn.gelu用法及代码示例
- Python tf.nn.embedding_lookup用法及代码示例
- Python tf.nn.local_response_normalization用法及代码示例
- Python tf.nn.scale_regularization_loss用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.RNNCellDropoutWrapper。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。