1、dropout

dropout 是指在深度学习网络的训练过程中,按照一定的概率将一部分神经网络单元暂时从网络中丢弃,相当于从原始的网络中找到一个更瘦的网络,这篇博客中讲的非常详细

 
2、tensorflow实现
 
用dropout:
import tensorflow as tf
import numpy as np x_data=np.linspace(-1.,1.,300)[:, np.newaxis]
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)+noise def add_layer(input,in_size,out_size,activation_function=None,dropout_function=False):
Weights=tf.Variable(tf.random_normal([in_size,out_size]))
biases=tf.Variable(tf.zeros([1,out_size])+0.1)
Wx_plus_b=tf.matmul(input,Weights)+biases if dropout_function==True:
Wx_plus_b=tf.nn.dropout(Wx_plus_b,keep_prob=0.5)
else:
pass if activation_function is None:
outputs=Wx_plus_b
else:
outputs=activation_function(Wx_plus_b)
return outputs xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1]) layer1=add_layer(xs,1,10,activation_function=tf.nn.relu,dropout_function=True)
predict=add_layer(layer1,10,1) loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-predict),reduction_indices=[1]))
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss) init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init) for i in range(100):
sess.run(train_step,feed_dict={xs: x_data,ys: y_data})
if i%5==0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

输出结果:

1.87953
0.294975
0.173229
0.122831
0.0859246
0.0712419
0.0839021
0.0572673
0.0676766
0.0584741
0.0556422
0.0576011
0.0534098
0.0472549
0.0528496
0.0427771
0.0485248
0.0502765
0.0454531
0.0516633

不用dropout:

import tensorflow as tf
import numpy as np x_data=np.linspace(-1.,1.,300)[:, np.newaxis]
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)+noise def add_layer(input,in_size,out_size,activation_function=None,dropout_function=False):
Weights=tf.Variable(tf.random_normal([in_size,out_size]))
biases=tf.Variable(tf.zeros([1,out_size])+0.1)
Wx_plus_b=tf.matmul(input,Weights)+biases if dropout_function==True:
Wx_plus_b=tf.nn.dropout(Wx_plus_b,keep_prob=1)
else:
pass if activation_function is None:
outputs=Wx_plus_b
else:
outputs=activation_function(Wx_plus_b)
return outputs xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1]) layer1=add_layer(xs,1,10,activation_function=tf.nn.relu)
predict=add_layer(layer1,10,1) loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-predict),reduction_indices=[1]))
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss) init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init) for i in range(100):
sess.run(train_step,feed_dict={xs: x_data,ys: y_data})
if i%5==0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

输出结果:

0.256632
0.0532672
0.0364148
0.0264385
0.0202409
0.0164314
0.0141813
0.0129079
0.0121878
0.0117478
0.0114399
0.0111906
0.0109715
0.0107702
0.0105785
0.010393
0.0102144
0.0100426
0.00987562
0.00971407

这里举例 用过dropout后,loss变得更大,是因为我这里所用数据较少,用更多的训练集去测试,dropout会变现的很好!

最新文章

  1. 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
  2. 让ar执行queryall和queryrow方法返回数组
  3. Wooyun隐写术总结
  4. win8 配 jdk
  5. iOS 开发中你是否遇到这些经验问题(二)
  6. Static Classes and Static Class Members
  7. oracle数据库删除数据Delete语句和Truncate语句的对比
  8. [置顶] LLVM每日谈之十五 LLVM自带的examples
  9. 从内存溢出看Java 环境中的内存结构(转)
  10. Python 基础三 文件 函数
  11. 妙用Outlook2003群发商业邮件
  12. .NET Core 2.0下载和文档
  13. 什么是事务?事务特性?事务隔离级别?spring事务传播特性?
  14. php环境和使用方法
  15. mint-ui Infinite scroll 重复加载、加载无效的原因及解决方案
  16. 杜教BM【转载】
  17. 剑指offer例题——旋转数组的最小数字
  18. 【C语言】练习1-23
  19. Hadoop守护进程【简--】
  20. 关于highstock横坐标的一些的一些说明(1)使用UTC时间

热门文章

  1. Dojo初探之3:dojo的DOM操作、query操作和domConstruct元素位置操作(基于dojo1.11.2版本)
  2. 禅道---Bug管理模块
  3. git 常用的命令符
  4. Python:一篇文章掌握Numpy的基本用法
  5. [0] DDD领域驱动设计(二) 之 值对象
  6. H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持
  7. 表单格式化插件jquery.serializeJSON
  8. top命令总结
  9. 再谈AbstractQueuedSynchronizer:基于AbstractQueuedSynchronizer的并发类实现
  10. 用py2exe将python文件转换成exe可执行程序