今天就跟大家聊聊有关TensorFlow中的剪枝优化指的是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一直以来,AI模型的压缩算法都是门高深的学问,之前国内深鉴科技也凭借着高效率的压缩算法,让更多轻量的计算终端也能享受AI的好处。
目前主流AI所使用的人工神经网络顾名思义,就是个非常复杂,互相牵连的网络结构,由于图像、语言、文字等不同类型的样本,会以不同的方式进行切割、存储,形成最基础的神经元,而机器学习或深度学习,就是要想办法在这些看似不相干的神经元中找出关连,并形成绵密的网状逻辑。
然而神经元越多,网络越庞大,需要用来储存神经网络的空间需求也越高,但存储空间在某些终端,尤其是移动智能设备中,是非常稀有的资源,因此如果要让这些储存空间有限的智能终端也能形成AI处理能力,那么神经网络模型就不能太大。
很有趣的是,其实我们大脑在成长过程中,也会经历类似的过程,这个过程叫做synaptic pruning,也就是神经突触修剪。而如果大脑没有在发育过程中经过有效的修剪,最终可能会发展成自闭症。而自闭症大脑前额叶的神经连结远比正常人多。
补充TensorFlow模型优化工具的不足
为了解决这个问题,包括深鉴在内的很多开发者,都提出过不同的压缩方式与逻辑,而其中,剪枝法已经被证明是效率最高的其中一种。剪枝法其实就是把神经网络中,对整体逻辑影响层面小,甚至是不需要的分支修剪掉,让模型的大小可以更有效的控制,然而剪枝法最重要的关键在于要剪在对的地方,才能在提升效率、降低存储空间需求的同时,又要能兼顾模型逻辑的正确性。
Google在2018年曾发表了模型优化工具,通过使用训练后量化的机制,能够大幅降低机器学习模型的存储空间需求,以及提升执行效率。
最初,该量化方法是采用降低参数的精度来达成,简单来说,就是原本使用32bit浮点的模型,使用8bit整数来重新存储和计算。当然,优化过程中还是需要经过比对和校准,借以避免严重失真的状况。
而才刚推出的剪枝API,则是在之前的模型优化工具中心增的优化工具。其功能就是前面所提到的,通过算法,修剪掉在权重张量(Weight Tensor)中的非必要数值,让神经网络中不必要的连接降到最低。
而剪枝API可以和前一版本的量化优化兼容,换句话说,开发者可以在其模型中同时使用两种优化方式,借以取得更好的优化效率。
Google也在工具说明中示范了如何把MNIST的90%稀疏模型从12MB压缩到2MB。
而在更多的模型压缩实验中,在不同稀疏准确率条件的设定下,剪枝API的压缩效率表现从50%到90%,表现相当不错。
工作原理
这个新的压缩优化工具是基于Keras的权重修剪API,使用简单但广泛适用的算法,并根据训练期间的大小迭代删除连接。
开发者指定最终目标稀疏度(例如90%),以及执行修剪的计划(例如,在步骤2,000开始修剪,在步骤10,000停止,并且每100步执行一次),以及修剪的可选配置结构(例如,应用于某些形状的单个值或值块)。
随着训练的进行,修剪流程将被安排执行,消除那些具有最低幅度值(即最接近零的那些)的权重,直到达到指定的稀疏度目标。 每次修剪流程被安排执行时,便会重新计算当前稀疏度目标,从0%开始,直到它在修剪计划结束时达到最终目标稀疏度为止。
看完上述内容,你们对TensorFlow中的剪枝优化指的是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。