在stackoverflow上有人討論使用numpy快速實現relu啟用函式的方法。
import numpy as np
x = np.random.random(
(5000
,5000))
-0.5
print
("max method1:"
)%timeit -n10 np.maximum(x,0)
print
("max method2:"
)%timeit -n10 np.maximum(
0, x)
print
("multiplication method:"
)%timeit -n10 x *
(x >0)
print
("abs method:"
)%timeit -n10 (
abs(x)
+ x)/2
print
("fancy index:"
)%timeit -n10 x[x<0]
=0print
("maxx0x method:"
)%timeit y=x
%timeit -n10 np.maximum(y,
0, y)
其輸出:
max method1:
10 loops, best of 3: 99.2 ms per loop
max method2:
10 loops, best of 3: 99.2 ms per loop
multiplication method:
10 loops, best of 3: 106 ms per loop
abs method:
10 loops, best of 3: 54.7 ms per loop
fancy index:
10 loops, best of 3: 10.2 ms per loop
maxx0x method:
100000000 loops, best of 3: 14.3 ns per loop
10 loops, best of 3: 17.1 ms per loop
需要注意的是最後一種方法會替換x原來的值,也就是說直接抹除了x中非零值。如果預先賦值y=x,同樣需要消耗一些時間,所以不建議使用這個函式。
使用x[x<0]速度最快,但它只返回滿足條件的值,連位置資訊都丟失了。
建議使用(abs(x) + x) / 2。
python 實現演算法 Python實現演算法 一
1.二分查詢 def binary search mylist,item low 0 high len mylist 1 while low high mid low high 2 如果 low high 2不是偶數,python自動將mid向下圓整。guess mylist mid if gues...
python實現快排演算法 Python實現快排
挖坑法思路 取乙個元素p 第乙個元素 使元素p歸位 列表被p分成兩部分,左邊的數一定不大於p,右邊的數一定不小於p 遞迴完成排序。python 示例 lst 5,7,4,3,1,2,9,8 def quick sort d,l,r if l r m partition d,l,r quick sor...
排序演算法python實現
先列出一些演算法複雜度的識別符號號的意思,最常用的是o,表示演算法的上屆,如 2n2 o n2 而且有可能是漸進緊確的,意思是g n 乘上乙個常數係數是可以等於f n 的,就是所謂的a b。而o的區別就是非漸進緊確的,如2n o n2 o n2 確實可以作為2n的上屆,不過比較大,就是所謂的a其他符...