Numpy ndarray 矢量化和广播计算效率,相比Python list类型,大约高200倍,见下图:
矢量化主要是跟显式的循环和索引做对比,矢量化计算,不需要显式的循环和索引。其好处有:
- 矢量化代码更简洁,更易于阅读
- 更少的代码行通常意味着更少的错误
- 代码更接近于标准的数学公式
- 矢量化导致产生更多 “Pythonic” 代码。
如果没有矢量化,我们的代码就会被低效且难以阅读的for循环所困扰。矢量化的思维是N个独立样本,在实现上不需要for训练,直接并行计算,例如,N个独立样本,每个样本X有100个特征点,通过一个神经元,执行 y = X*W计算,所有样本计算完一遍的实现方式:矢量化 vs for-loop,如下所示,效率相差8倍
进阶学习:《基于Keras CNN与Fashion_MNIST数据集开发一个深度学习程序》