系列连载目录
- 请查看博客 《Paper》 4.1 小节 【Keras】Classification in CIFAR-10 系列连载
- 上一篇:【Keras-SqueezeNet】CIFAR-10(上)
学习借鉴
- github:BIGBALLON/cifar-10-cnn
- 知乎专栏:写给妹子的深度学习教程
- SqueezeNet Caffe 代码:https://github.com/DeepScale/SqueezeNet/blob/master/SqueezeNet_v1.0/train_val.prototxt
- SqueezeNet Keras 代码:https://github.com/rcmalli/keras-squeezenet/blob/master/keras_squeezenet/squeezenet.py
参考
硬件
- TITAN XP
文章目录
1 理论基础
参考【SqueezeNet】《SqueezeNet:AlexNet-Level accuracy with 50× fewer parameters and <0.5MB model size》
上一篇:【Keras-SqueezeNet】CIFAR-10(上)
本篇博客对论文中的 figure 3 进行复现,体验下metaparameters的直观感受!
2 Squeeze Ratio
计算代码如下,pct_3x3
固定为 0.5,SR
取多值,输出转成了 int
了,但是计算的时候涉及到小数,如果
s
1
!
=
(
e
1
+
e
3
)
∗
S
R
s_1 != (e_1 + e_3) * SR
s1!=(e1+e3)∗SR,在写网络结构的时候,将
e
1
e_1
e1 和
e
3
e_3
e3 中较小的值补1。
eg:
s
1
=
64
s_1=64
s1=64,
e
1
=
1
e_1=1
e1=1,
e
3
=
126
e_3=126
e3=126 ,则令
e
1
=
2
e_1 = 2
e1=2
from math import floor
base_e = 128
incr_e = 128
freq = 2
pct_3x3 = 0.5
SR = 0.125
print ("s1 e1 e3 ")
for i in range(0,8):
e_i = base_e + (incr_e * floor(i/freq))
e_i_3x3 = e_i * pct_3x3
e_i_1x1 = e_i * (1-pct_3x3)
s_i_1x1 = e_i * SR
print("%d %d %d"%(s_i_1x1,e_i_1x1,e_i_3x3))
我们在 squeezenet_stride_slim_2
的基础下进行实验
squeezenet_sr_0.125 / 0.25 / 0.5 / 0.75 / 1.0
squeezenet_sr_0.125
即为 squeezenet_stride_slim_2
(【Keras-SqueezeNet】CIFAR-10(上) 中表见最好的结果)
参数量变化如下(越来越多):
-
squeezenet_sr_0.125
Total params: 741,088 -
squeezenet_sr_0.25
Total params: 1,461,024 -
squeezenet_sr_0.5
Total params: 2,900,896 -
squeezenet_sr_0.75
Total params: 4,340,768 -
squeezenet_sr_1
Total params: 5,780,640
结果分析如下:
test accuracy 和 test loss
放大一点看
训练时间逐渐增多,精度逐渐提升!
3 Trading off 1x1 and 3x3
squeezenet_pct3x3_1 / 12.5 / 25 / 37.5 / 50 / 62.5 / 75.0 / 87.5 / 99
squeeze ratio 固定为 0.5,其中 squeezenet_pct3x3_50
即为 squeezenet_sr_0.5
参数量变化如下(越来越多):
- squeezenet_pct3x3_1
Total params: 979,872 - squeezenet_pct3x3_12.5
Total params: 1,426,336 - squeezenet_pct3x3_25
Total params: 1,917,856 - squeezenet_pct3x3_37.5
Total params: 2,409,376 - squeezenet_pct3x3_50
Total params: 2,900,896 - squeezenet_pct3x3_62.5
Total params: 3,392,416 - squeezenet_pct3x3_75
Total params: 3,883,936 - squeezenet_pct3x3_87.5
Total params: 4,375,456 - squeezenet_pct3x3_99
- Total params: 4,821,920
结果分析如下:
test accuracy 和 test loss
放大一点看
3 总结
精度最高的是 squeezenet_sr_1
和 squeeze_pct3x3_87.5
,两个结合起来试试
哈哈哈,还是挺猛的,快突破 94%了!
parameters(还是增加了挺多的)
Total params: 8,729,760
Trainable params: 8,719,308
Non-trainable params: 10,452