调参方法:网格调参
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的层数
随缘,深的能力强