tf.nn.dropout是tensorflow常用的函数,它的作用是为了减轻过拟合带来的问题而使用的函数,它一般用在每个连接层的输出。
Dropout就是在不同的训练过程中,按照一定概率使得某些神经元停止工作。也就是让每个神经元按照一定的概率停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重依然存在,下次更新时可能会使用到它。
神经网络在训练过程中,可以无限逼近一段非线性连续函数,但是如果模型网络层数过多或设置的足够复杂,在训练时会出现过拟合(overfitting),就像下图这样。
图中蓝色的线,为了可以涉及到每个点,呈现出了过拟合现象。
尽管它很好的拟合了每一个点的位置,但是曲线是歪歪曲曲,这个的曲线不具有良好的鲁棒性,不是我们想要的结果,在实际工程实验中,我们更希望得到如黑色线一样的曲线。
tf.nn.dropout函数介绍
tf.nn.dropout(
x, rate, noise_shape=None, seed=None, name=None
)
x:
上一层传下载的tensor。(一般用于全连接层后面)
rate:
每个元素被丢弃的概率, rate = 1 - keep_prob ,保留keep_prob的神经元继续工作,其余的停止工作与更新。(在这里并不是真正被丢掉,而是在这一轮的训练中不更新这个神经元的权值,权值