恒达娱乐 > SEO算法 > 专栏 深度学习算法优化系列五 使用TensorFlo恒达娱乐w-Lite对LeN

专栏 深度学习算法优化系列五 使用TensorFlo恒达娱乐w-Lite对LeN

admin SEO算法 2020年02月11日

  原标题:专栏 深度学习算法优化系列五 使用TensorFlow-Lite对LeNet进行训练后量化

  在 深度学习算法优化系列三 Google CVPR2018 int8量化算法 这篇推文中已经详细介绍了Google提出的Min-Max量化方式,关于原理这一小节就不再赘述了,感兴趣的去看一下那篇推文即可。今天主要是利用 tflite 来跑一下这个量化算法,量化一个最简单的LeNet-5模型来说明一下量化的有效性。 tflite 全称为 TensorFlow Lite ,是一种用于设备端推断的开源深度学习框架。恒达娱乐中文官方地址我放附录了,我们理解为这个框架可以把我们用tensorflow训练出来的模型转换到移动端进行部署即可,在这个转换过程中就可以自动调用算法执行模型剪枝,模型量化了。由于我并不熟悉将 tflite 模型放到 Android 端进行测试的过程,所以我将 tflite 模型直接在PC上进行了测试(包括精度,速度,模型大小)。

  设置一些超参数,分别为 dropout 层的丢弃比率,学习率,批量大小,模型需要保存的路径以及训练的迭代次数。

  构建我们的训练网络,这里使用LeNet,想使用其他网络或者自己的网络相应修改即可。注意一下这里使用了 tensorflow 中的变量重用函数,方便的控制在测试阶段不使用 Dropout 。关于 Lenet 可以详细的看一下我之前的推文,地址如下: 卷积神经网络学习路线(六) 经典网络回顾之LeNet 同时在LeNet类中已经定义好了损失函数和优化器,所以接下来我们就可以直接启动训练啦。

  将模型转为 tflite ,调用的 tf.lite.TFLiteConverter 。并执行量化操作,这样模型大小被压缩到了之前的 1/4 左右。代码如下:

  最后我们再写两个测试的代码,分别对原始模型和量化后模型的推理速度和精度进行一个测试,代码如下:

  可以看到对LeNet量化后模型的大小变为原始模型的近 1/4 ,并且精度几乎不降,且运行速度也有 3-4 倍加快。也说明了训练后量化的有效性。今天暂时就讲到这里了,我把源码放到github上了,地址见附录。恒达注册登录

标签: