欢迎关注我的公众号 [极智视界],获取我的更多笔记分享
大家好,我是极智视界,本文介绍一下 谈谈算子开发 - 广播机制 boradcast。
广播机制在 reduce机制 的算子开发的时候可以说十分常见,所谓 reduce机制 是指像 sum、add、concat之类的输入是多头的,输出是单头类型的算子。拿 sum(a, b) 来说,就需要 a 和 b 具有相同的 shape,这时就是广播机制发挥作用的时候了。
那么什么是广播机制呢?广播机制主要功能是 升维,可以将一个数组的每一个维度扩展为一个固定的 shape,需要被扩展的数组的每个维度的大小或者与目标 shape 相等,或者为1,广播会在元素个数为 1 的维度上进行。例如,原来的数组为 (1, 3, 512, 512),目标 shape 为 (32, 3, 512, 512),则可以通过广播将 a 的维度扩展为目标 shape。
再举个具体的例子,比如有 Tensor A 的 shape 为 (32, 3, 1, 7),Tensor B 的 shape 为 (1, 1, 5, 1),你想执行 sum(Tensor A,Tensor B),那么内部会是怎么样一个执行过程呢?