python實現ReLU演算法

2021-09-25 04:05:37 字數 1286 閱讀 9067

在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其他符...