代码改变世界

贪玩ML系列之CIFAR-10调参

2018-07-18 23:11  ZealouSnesS  阅读(654)  评论(0编辑  收藏  举报

调参方法:网格调参

 

tf.layers.conv2d()中的padding参数

取值“same”,表示当filter移出边界时,给空位补0继续计算。该方法能够更多的保留图像边缘信息。当图片较小(如CIFAR-10中的32*32)时,推荐使用该选项

取值“valid”,表示当filter移出边界时,舍弃该filter

 

tf.layers.conv2d()中的filters参数 

一般取值:

一般越靠后的层,我们将它的filters取的更多一些,一是为了保留更多的信息,二是为了提取更多抽象的特征

 

tf.layers.conv2d()中的kernel_size参数和strides参数

tf.layers.max_pooling2d()中的pool_size参数和strides参数

kernel参数一般取7/5/3/1等,strides一般取3/2/1等

一般越靠后的层,我们将kernelsize取的越大一些,strides不变

 

tf.layers.dense()中的units参数

一般取值:1024/2048/4096

 

tf.train.AdamOptimizer()中的learning_rate参数

一般取值:0.001/0.01/0.1/0.0001

一般在训练开始时我们将learning_rate调大让模型加速下降,在训练一段时间后我们将learning_rate调小让模型更易收敛

 

epochs参数(批次数)

这个不确定,一般我们写一个脚本,判断当validation accuracy不断小幅度波动时停止

 

batch_size参数

一般取64/128/256

图片大的时候取小一点,防止炸内存(例如CIFAR-10中图片小,32*32,所以我们可以取大一点的例如256)

理论上取大一点好

一般取2的整数次方

 

keep_probability参数

 一般默认0.5

 

conv_pooling的层数

 随缘,深的能力强