tf.nn.dropout

dropout是一种防止深度神经网络过拟合和梯度消失的优化策略。它通过随机设置神经元节点的保留概率(keep_prob),在训练过程中以这个概率保留或关闭节点,避免模型依赖于特定节点,从而提高泛化能力。代码示例展示了在TensorFlow中如何应用dropout。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 dropout(随机失活): 是为了解决深度神经网络的过拟合(overfitting)和梯度消失(gradient vanishing)而被提出的优化方法。

dropout是通过遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个keep_prob(节点保留概率),即该层的节点有keep_prob的概率被保留,keep_prob的取值范围在0到1之间。通过设置神经网络该层节点的保留概率,使得神经网络不会去偏向于某一个节点(因为该节点有可能被删除),从而使得每一个节点的权重不会过大。

简单来说:随机失活就是让神经元以超参数keep_prob的概率被激活或者被设置为0。

dropout(
    x,
    keep_prob,
    noise_shape=None,
    seed=None,
    name=None
)
参数名必选类型说明
xtensor输出元素是 x 中的元素以 keep_prob 概率除以 keep_prob,否则为 0
keep_probscalar Tensordropout 的概率,一般是占位符
noise_shapetensor默认情况下,每个元素是否 dropout 是相互独立。如果指定 noise_shape,若 noise_shape[i] == shape(x)[i],该维度的元素是否 dropout 是相互独立,若 noise_shape[i] != shape(x)[i] 该维度元素是否 dropout 不相互独立,要么一起 dropout 要么一起保留
seed数值如果指定该值,每次 dropout 结果相同
namestring运算名称

 代码示例:

import tensorflow as tf

a = tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32)
b = tf.placeholder(tf.float32)
c = tf.nn.dropout(a,b,[2,1],1)   #noise_shape与a.shape的行大小相同,列不同,则行要么全为0,要么全不为0

# c = tf.nn.dropout(a,b,[1,3],1)   #noise_shape与a.shape的列大小相同,行不同,则列要么全为0,要么全不为0

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(c,feed_dict={b:0.75}))

运行结果:

[[0.        0.        0.       ]
 [5.3333335 6.6666665 8.       ]]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值