1.Python
在CNN4 参数优化中有一个CNN模型,其中的限速步是max pooling。
如下所示,Python中运行一个50*100*24*24的max pooling需要3秒。
import numpy as np import time def simple_pool(input, ds=(2, 2)): n, m, h, w = input.shape d, s = ds zh = h / d + h % d zw = w / s + w % s z = np.zeros((n, m,zh,zw)) for k in range(n): for o in range(m): for i in range(zh): for j in range(zw): maxd = -10000 for u in range(min(d,h-d*i) ): for v in range(min(d,w-d*j)): if input[k,o,d*i+u,d*j+v]>maxd: maxd=input[k,o,d*i+u,d*j+v] z[k, o, i, j] = maxd return z N,M,H,W=[50,100,24,24] a=np.reshape(range(N*M*H*W),(N,M,H,W))*0.01 start_time= time.time() out_data=simple_pool(a) print "Cost:",time.time()-start_time,"s" print out_data[0,0,0,:10] """ Cost: 3.08899998665 s [ 0.25 0.27 0.29 0.31 0.33 0.35 0.37 0.39 0.41 0.43] """
2.C++
采用c++,仅需16~30ms。