SENet学习笔记(一)
根据近期的学习情况,将Tensorflow深度学习框架下的Senet实现过程做一个简单的整理,初次学习,还有很多地方理解的不太清楚,欢迎大家一起交流、学习。
Senet程序参数说明
(1) 权重衰减:weight_decay=0.0005
(2) 动量:momentum = 0.9
(3) 初始学习速率:init_learning_rate = 0.1
(4) cardinality = 8 # how many split ?
(5) Res块数目:blocks = 3
(6) 深度(通道数\输出结果个数):depth = 64
(7) 降低倍数:reduction_ratio = 4(论文里是16)
(8) 批处理的大小:batch_size = 128
(9) 迭代次数:iteration = 391
(10) 测试迭代次数:test_iteration = 10
(11) 总的训练轮数:total_epochs = 100
2、卷积层定义:
(1)参数:输入、滤波器个数、卷积核大小、步长、填充类型、层名字
(2)Padding类型分为两种:
padding=’SAME’或‘VAILD’(默认是VAILD)
区别:‘SAME’当剩下的不足卷积核大小时,进行补零操作;‘VAILD’方式使直接把剩余部分丢失。
(3)tf.layers.conv2d()二维卷积函数
use_bias=False或者bias_initializer=None都表示禁用bias,
参数说明表如下:
![]()
(4)全局平均池化、平均池化
def Global_Average_Pooling(x):
return global_avg_pool(x, name=’Global_avg_pooling’)
def Average_pooling(x, pool_size=[2,2], stride=2, padding=’SAME’):
return tf.layers.average_pooling2d(inputs=x, pool_size=pool_size,strides=stride, padding=padding)
(5)批量标准化batch_normalization(),经过处理之后可以加速训练速度。
详细参考用法:
https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization
函数tf.cond(判别,lambda : ……,lambda : ……)类似if……else语句;