tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层。
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
上面方法中常用的是前两个参数:
第一个参数x:指输入
第二个参数keep_prob: 设置神经元被选中的概率,在初始化时keep_prob是一个占位符, keep_prob = tf.placeholder(tf.float32) 。tensorflow在run时设置keep_prob具体的值,例如keep_prob: 0.5
https://blog.csdn.net/huahuazhu/article/details/73649389
Dropout:
torch.nn.Dropout(0.5)
https://morvanzhou.github.io/tutorials/machine-learning/torch/5-03-dropout/
可以加在卷积层和全连接层的后面,但多见于放在fc 层后面, 用来防止过拟合
https://www.zhihu.com/question/269387326
个人感觉除非是大型网络,才采用dropout,不然我感觉自己在一些小型网络上,训练好像很是不爽。之前搞一个比较小的网络,搞人脸特征点定位的时候,因为训练数据不够,怕过拟合,于是就采用dropout,最后感觉好像训练速度好慢,从此就对dropout有了偏见,感觉训练过程一直在波动,很是不爽。
https://blog.csdn.net/hjimce/article/details/50413257
Dropout的改进
maxout和DropConnect 提高Deep Network的泛化能力的
https://www.cnblogs.com/tornadomeet/p/3430312.html