MXNet 实现 TensorFlow 训练模拟量化方法

栏目: 数据库 · 发布时间: 6年前

内容简介:Simpfly implementation of Quantization Aware Training[1][2] with MXNet-scala module.Tested on Ubuntu 14.041, compile MXNet with CUDA, then compile the scala-pkg,doc:

MXNET-Scala TrainQuantization

Simpfly implementation of Quantization Aware Training[1][2] with MXNet-scala module.

Setup

Tested on Ubuntu 14.04

Requirements

Build steps

1, compile MXNet with CUDA, then compile the scala-pkg,doc: https://github.com/dmlc/mxnet/tree/master/scala-package

2, under the Mxnet-Scala/TrainQuantization folder:

mkdir lib;
 ln -s $MXNET_HOME/scala-package/assembly/linux-x86_64-gpu/target/mxnet-full_2.11-linux-x86_64-gpu-1.5.0-SNAPSHOT.jar lib

3, run sbt and then compile the project

Train vgg on Cifar10

Using the script train_vgg16_cifar10.sh under the scripts folder to train vgg from scratch on Cifar10:

FINETUNE_MODEL_EPOCH=-1
FINETUNE_MODEL_PREFIX=$ROOT/models/

Or you can finetune with the provided pretrain model:

FINETUNE_MODEL_EPOCH=46
FINETUNE_MODEL_PREFIX=$ROOT/models/cifar10_vgg16_acc_0.8772035

I did not use any data augmentation and carefully tune the hyper-parameters during training, the best accuracy I got was 0.877, worse than the best accracy 0.93 reported on Cifar10.

Train vgg with fake quantization on Cifar10

Using the script train_quantize_vgg16_cifar10.sh under the scripts folder to train vgg with fake quantization on Cifar10, you must provide the pretrained model:

FINETUNE_MODEL_EPOCH=46
FINETUNE_MODEL_PREFIX=$ROOT/models/cifar10_vgg16_acc_0.8772035

If everything goes right, you should get almost the same accuray with pretrained model after serveral epoch.

Test vgg with simulated quantization on Cifar10

Using the script test_quantize_vgg16_cifar10.sh under the scripts folder to test pretrained fake quantization vgg with simulated quantization on Cifar10, you must provide the pretrained model:

FINETUNE_MODEL_EPOCH=57
FINETUNE_MODEL_PREFIX=$ROOT/models/cifar10_quantize_vgg16_acc_0.877504

Warning

Currently there is memory leak some where in the code, but I can't figure out the reason. You will see the memory usage keep increasing when you run the tranining script. So remenber to stop the traning script when memory usage is too high, and you can resume the training process with saved model previously.

Reference

[1] Quantizing deep convolutional networks for efficient inference: A whitepaper. https://arxiv.org/pdf/1806.08342.pdf

[2] Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference. https://arxiv.org/pdf/1712.05877.pdf


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

黑客简史:棱镜中的帝国

黑客简史:棱镜中的帝国

刘创 / 电子工业出版社 / 2015-1 / 39.80元

“黑客”,伴随着计算机和互联网而诞生,他们掌握着前沿的计算机和网络技术,能够发现并利用计算机系统和网络的弱点,他们的行为动机多样,因此我们必须对这一群体进行分解,认识他们及其技术的两面性——“黑客”中那些不断拓展技术边界、富于创造力的,和那些掌握技术、却利欲熏心的,就像硬币的两面,谁都无法清晰地辨别是非。相对于主流文化,黑客的行为方式和理念等形成了一种“亚文化”,与主流文化相互作用。一起来看看 《黑客简史:棱镜中的帝国》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试