神经网络编译器-常量折叠

常量折叠

所谓的常量折叠,指在传统编译器做语法分析的过程中,如果一个表达式的所有的operands都是常量,那么在编译结束的时候,相当于直接用计算结果来代表计算表达式.

例子

在这里插入图片描述

如上图所示,在这个函数里面,实现了三个常量的乘法,那么在编译的过程中,直接用计算的结果来代替本来要用两个乘法指令表达的计算式.也就是用(101112)代替(abc).常量折叠的技术通常和常量传播(也就是分析占位符到底是个什么类型,如果是常量的话,把他的数值给替代了).

神经网络编译器的常量折叠

我们以简单的add-conv为例.左边是没有进行常量折叠的计算图,右边是进行常量折叠的结果.对于两个形状大小为(N,C,H,W)而言的四维常量Tensor来说,其Add的结果是一定的.所以我们可以把它合成一个常量放在编译器生成的最终的计算图里面.
在这里插入图片描述

这样做,首先我们不需要给Add这个节点分配额外的存储资源.在计算图执行的过程中,也不需要反复计算add这个操作,直接进行访问结果就好了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值