参数—调优经验

2018-01-10  本文已影响0人  cotecc

一、初始化weight,bias

1.1 理论

1)为了避免0梯度,weight最好初始化带些噪声,且避免数据对称
2)为了避免dead neurons(神经元“死掉”),最好初始化为一个较小的正数(因为通常会用ReLU激活函数,神经元出现负值,便永远为0,无法激活)

1.2 实战

1)初始化weights有奇效,某次初始化为tf.truncated_normal([784,hidden1_units],stddev=1.0 / math.sqrt(784)),将60%的准确率提到90%

二、dropout

1)声明一个keep_prob 参数,keep_prob = tf.placeholder(tf.float32),训练时开启,测试时关闭
2)train阶段在softmax输出之前,对结果进行drop out
3)feed_dict时传入

keep_prob = tf.placeholder(tf.float32)                  #drop out的参数
logits = tf.nn.dropout(tf.matmul(hidden2, w3) + b3,keep_prob=keep_prob)       #softmax前的结果进行dropout
sess.run([train_op,accuracy_op,loss_op,summary],feed_dict={xs:x_train,ys:y_train,keep_prob:0.5})   #训练时开启
sess.run([train_op,accuracy_op,loss_op,summary],feed_dict={xs:x_test,ys:y_test,keep_prob:1.0})   #测试时关闭

三、optimizer的选择

1)简单的网络,使用gradient descend即可
2)复杂的网络(cnn等),使用ADAM或momentum等计算更快的,效果更好的优化器
3)理解这几个常用optimizer的意义,公式推导
--# todo,实战分析

四、tensorboard的使用

https://www.tensorflow.org/get_started/summaries_and_tensorboard
https://www.jianshu.com/p/7d698cebf5f1

4.1 sumary等用法

train_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/train', sess.graph)
test_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/test')
注意:`FileWriter`第一个参数指明event文件存储路径,传graph是为了展示对应graph的形状

4.2 graph可视化

https://www.tensorflow.org/get_started/graph_viz

五、debug错误

5.1 (使用ipython等环境)tensorboard可视化输出时,当前路径只能存一个event文件

[[Node: inputs/x_input = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

使用time.time命名不同event文件夹就行。
https://stackoverflow.com/questions/35114376/error-when-computing-summaries-in-tensorflow

5.2 使用tfdbg进行可视化debug

http://www.cnblogs.com/hellcat/articles/7812119.html
https://www.tensorflow.org/programmers_guide/debugger
http://usyiyi.cn/documents/tensorflow_13/programmers_guide/debugger.html

六、使用GPU

官方教程使用gpu

config = tf.ConfigProto()
config.gpu_options.allow_growth = True                    #让gpu内存动态增长,否则直接把所有内存分配给该进程
config.log_device_placement = True                        #记录每个op tensor 分配的设备
sess=tf.Session(config=config)
上一篇下一篇

猜你喜欢

热点阅读