关于CIFAR10程序的一些经验总结
- 在卷积层和全连接层中,设置权重和偏置时,推荐使用
tf.get_variable()
函数,好处是参数可重复使用,减小内存的占用,而且如果是导入别人的参数进行训练时,必须使用tf.get_variable()
。 - 为了用
tensorboard
画出图来,在给每一层命名时,通常采用with tf.variable_scope('名字') as scope
,tf.name_scope,区别在于:tf.variable_scope
在每个参数前加一个前缀,使得参数独一无二,故与tf.get_variable()
搭配使用,取得很好地效果;tf.name_scope
没有在参数前加前缀,一般用于节点处的命名。 - 在对权重初始化时,使用初始化函数
tf.contrib.layers.xavier_initialize()
比较好,默认采用均值初始化,还有可选参数,可根据需要进行设置。常用的还有tf.truncated_normal_initializer(有参数)
;对偏置初始化一般采用tf.constant_initializer(有参数)
。 - 批量输入图片时,要对图片进行归一化
tf.nn.batch_normalization()
,原理为: