AI数学基础6-向量化计算(Vectorization)

《AI数学基础5-生物学神经网络,人工神经网络,逻辑回归求导计算图》

向量化是非常常用的加速计算的方式,特别适合深度学习等需要训练大数据的领域。

对于 y = wx + b,  若 w, x都是向量,那么,可以用两种方式来计算,第一是for 循环

y = 0

for i in range(n):

    y += w[i]*x[i]

    y += b

也可以用向量化的方式实现:

y = np.dot(w,x) + b


AI数学基础6-向量化计算(Vectorization)_第1张图片

二者计算速度相差500倍以上,测试结果如下:


AI数学基础6-向量化计算(Vectorization)_第2张图片

所以,Andrew Ng给大家的建议是:Whenever Possible, avoid explicit for-loops


AI数学基础6-向量化计算(Vectorization)_第3张图片

对于独立的样本,用For循环串行计算的效率远远低于向量化后,用矩阵方式并行计算的效率。

神经网络训练,恰恰是大量独立样本的大规模并行乘加计算!~~~ 换句话说,硬件乘加单元越多,并行计算能力越强

独立(independent)在数学上的意思是,相互之间没有计算的先后顺序或者依赖关系。

相对CPU,GPU这种具备超多并行计算单元的处理器,更加适合独立样本的矩阵计算,计算效率远远超过CPU:参考《Debunking the 100X GPU vs. CPU Myth:An Evaluation of Throughput Computing on CPU and GPU》

Google出的TPU,就更加适合神经网络计算,效率比GPU更高。TPU性能强劲的秘诀,是因为它专注于神经网络推断。这使得量化选择、CISC指令集、矩阵处理器和最小设计得好很好的实现。

由此可以看出:TPU和APU(AI芯片)本质是,大量堆叠向量运算所需要的乘加单元,消除与向量计算无关的电路单元,在功耗和芯片面积尽可能小的情况下,把向量计算能力做的尽可能大。

《AI数学基础7-行向量和列向量》

你可能感兴趣的:(AI数学基础6-向量化计算(Vectorization))