注,本文是在学习吴恩达老师(Andrew Ng)网易公开课课程的的学习总结和理解,希望与君共勉!
先看一个例子
import numpy as np
import time
a = np.random.rand(1000000) b = np.random.rand(1000000) tic = time.time() c = np.dot(a,b) toc = time.time() print("Vectorized version:" + str(1000*(toc-tic))+"ms" + " c =" + str(c) ) c = 0 tic = time.time() for i in range(1000000): c += a[i]*b[i] toc = time.time() print("For loop:" + str(1000*(toc-tic))+"ms" + " c =" + str(c) )
执行结果:
Vectorized version:3.00002098083ms c =250202.521816
For loop:653.000116348ms c =250202.521816
从执行结果来看向量化的程序运行速度要比非向量化的程序块250倍左右,为什么是向量化的程序运行速度会快很多呢?
只是没有GPU擅长而已。
实际编程的法则是只要有可能就不能显式的使用for循环。