如何在Numpy中实现ReLU功能?
0 921
0

我想制作一个使用ReLU函数的简单神经网络。有人可以告诉我如何使用numpy实现该功能吗?

收藏
2021-02-05 10:40 更新 karry •  3510
共 1 个回答
高赞 时间
0

有两种方法

>>> x = np.random.random((3, 2)) - 0.5>>> x
array([[-0.00590765,  0.18932873],
       [-0.32396051,  0.25586596],
       [ 0.22358098,  0.02217555]])>>> np.maximum(x, 0)
array([[ 0.        ,  0.18932873],
       [ 0.        ,  0.25586596],
       [ 0.22358098,  0.02217555]])>>> x * (x > 0)
array([[-0.        ,  0.18932873],
       [-0.        ,  0.25586596],
       [ 0.22358098,  0.02217555]])>>> (abs(x) + x) / 2
array([[ 0.        ,  0.18932873],
       [ 0.        ,  0.25586596],
       [ 0.22358098,  0.02217555]])

如果用以下代码对结果进行计时:

import numpy as np

x = np.random.random((5000, 5000)) - 0.5
print("max method:")
%timeit -n10 np.maximum(x, 0)

print("multiplication method:")
%timeit -n10 x * (x > 0)

print("abs method:")
%timeit -n10 (abs(x) + x) / 2

我们得到:

max method:10 loops, best of 3: 239 ms per loop
multiplication method:10 loops, best of 3: 145 ms per loopabs method:10 loops, best of 3: 288 ms per loop

所以乘法似乎是最快的。

Via:https://stackoverflow.com/a/32109519/14964791

收藏
2021-02-05 11:30 更新 anna •  3936