【Keras-SqueezeNet】CIFAR-10(下)

系列连载目录

  • 请查看博客 《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

参考

  • 【Keras-CNN】CIFAR-10
  • 本地远程访问Ubuntu16.04.3服务器上的TensorBoard
  • caffe代码可视化工具

硬件

  • TITAN XP

文章目录

  • 1 理论基础
  • 2 Squeeze Ratio
    • squeezenet_sr_0.125 / 0.25 / 0.5 / 0.75 / 1.0
  • 3 Trading off 1x1 and 3x3
    • squeezenet_pct3x3_1 / 12.5 / 25 / 37.5 / 50 / 62.5 / 75.0 / 87.5 / 99
  • 3 总结

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
【Keras-SqueezeNet】CIFAR-10(下)_第1张图片
放大一点看【Keras-SqueezeNet】CIFAR-10(下)_第2张图片
训练时间逐渐增多,精度逐渐提升!
【Keras-SqueezeNet】CIFAR-10(下)_第3张图片

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

【Keras-SqueezeNet】CIFAR-10(下)_第4张图片

结果分析如下:
test accuracy 和 test loss
【Keras-SqueezeNet】CIFAR-10(下)_第5张图片
放大一点看
【Keras-SqueezeNet】CIFAR-10(下)_第6张图片

3 总结

精度最高的是 squeezenet_sr_1squeeze_pct3x3_87.5,两个结合起来试试
【Keras-SqueezeNet】CIFAR-10(下)_第7张图片
【Keras-SqueezeNet】CIFAR-10(下)_第8张图片
哈哈哈,还是挺猛的,快突破 94%了!

parameters(还是增加了挺多的)

Total params: 8,729,760
Trainable params: 8,719,308
Non-trainable params: 10,452

在这里插入图片描述

你可能感兴趣的:(TensroFlow,/,Keras)