文档
注册

broadcast关系

广播概念

目前大部分算子API支持NumPy的broadcast特征。“broadcast”(广播)描述了NumPy在算术运算期间如何处理具有不同形状的数组。在某些情况下,较小的数组可以“广播至”较大的数组,使两者shape互相兼容。

广播提供了一种数组向量化操作,从而使得循环在C而不是Python中发生。它无需复制不必要的数据即可完成,通常算法的效率较高。然而在某些情况下,广播并不是一种好方法,因为它会导致内存使用效率降低,从而减缓计算速度。

广播规则

一般进行广播计算时,需要理解以下规则:

  • 规则1:让所有输入数组都向形状最长的数组看齐。形状不足的部分通过在前面(左侧)填充1。

    说明: 形状其实就是指the number of dimensions。比如计算a+b,其中a.shape=(2, 2, 3)、b.shape=(2, 3),那么数组b将被broadcast为b.shape=(1, 2, 3)。

  • 规则2:如果两个数组的形状在任何维度上均不匹配,但是某个数组中某一个维度为1,则该维度中形状为1的数组将被拉伸以匹配另一个数组对应维度形状。

    说明: 本场景下,只需保证能在某一个维度做broadcast即可。比如计算a+b,其中a.shape=(1, 3)、b.shape=(3, 1),那么两个数组会boradcast为a.shape=(3, 3)、b.shape=(3, 3)。

  • 规则3:如果两个数组的形状在任何维度上均不匹配,且均没有等于1的维度,则会报错。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词