当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.nn.dropout用法及代码示例


计算 dropout:随机将元素设置为零以防止过度拟合。

用法

tf.nn.dropout(
    x, rate, noise_shape=None, seed=None, name=None
)

参数

  • x 浮点张量。
  • rate 与 x 具有相同类型的标量 Tensor。每个元素被丢弃的概率。例如,设置 rate=0.1 将丢弃 10% 的输入元素。
  • noise_shape 一维整数 Tensor ,表示随机生成的保持/丢弃标志的形状。
  • seed 一个 Python 整数。用于创建随机种子。有关行为,请参见tf.random.set_seed
  • name 此操作的名称(可选)。

返回

  • x 形状相同的张量。

抛出

  • ValueError 如果 rate 不在 [0, 1) 中,或者如果 x 不是浮点张量。 rate=1 是不允许的,因为输出将全为零,这可能不是预期的。

警告:你应该考虑使用tf.nn.experimental.stateless_dropout而不是这个函数。和...之间的不同tf.nn.experimental.stateless_dropout这个函数类似于tf.random.stateless_uniformtf.random.uniform.请参见随机数生成TF 中各种 RNG 系统的详细说明指南。正如指南所述,传统的有状态 RNG 操作像tf.random.uniformtf.nn.dropout尚未弃用,但非常不鼓励,因为它们的状态难以控制。

注意:dropout 的行为在 TensorFlow 1.x 和 2.x 之间发生了变化。转换 1.x 代码时,请使用命名参数以确保行为保持一致。

另请参阅:tf.keras.layers.Dropout 用于 dropout 层。

Dropout 对于正则化 DNN 模型很有用。输入元素被随机设置为零(并且其他元素被重新缩放)。这鼓励每个节点独立有用,因为它不能依赖其他节点的输出。

更准确地说:xrate 元素的概率设置为 0 。其余元素按 1.0 / (1 - rate) 放大,以便保留预期值。

tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.5, seed = 1).numpy()
array([[2., 0., 0., 2., 2.],
     [2., 2., 2., 2., 2.],
     [2., 0., 2., 0., 2.]], dtype=float32)
tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.8, seed = 1).numpy()
array([[0., 0., 0., 5., 5.],
     [0., 5., 0., 5., 0.],
     [5., 0., 5., 0., 5.]], dtype=float32)
tf.nn.dropout(x, rate = 0.0) == x
<tf.Tensor:shape=(3, 5), dtype=bool, numpy=
  array([[ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True]])>

默认情况下,每个元素都是独立保留或删除的。如果指定了noise_shape,则必须广播到x的形状,并且只有具有noise_shape[i] == shape(x)[i]的维度才会做出独立的决定。这对于从图像或序列中删除整个通道很有用。例如:

tf.random.set_seed(0)
x = tf.ones([3,10])
tf.nn.dropout(x, rate = 2/3, noise_shape=[1,10], seed=1).numpy()
array([[0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.]], dtype=float32)

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.dropout。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。