ReLU Prime与NumPy阵列

Tis*_*box 5 python arrays numpy

我想将一个multidimensionnal 数组传递给reluprime函数

def reluprime(x):
    if x > 0:
        return 1
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

......这x是整个阵列.它回来了

ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

我有正常relu功能的这个问题,而不是使用max()我使用的python函数np.max(),它工作.但是对于relu prime,它无论如何都无法正常工作.我试过了:

def reluprime(x):
    if np.greater(x, 0):
        return 1
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

......它仍然返回相同的错误.我怎样才能解决这个问题?谢谢.

Mir*_*ber 6

因为如果向量中的条目大于0,则relu prime返回1,否则返回0,您可以这样做:

def reluprime(x):
    return (x>0).astype(x.dtype)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,x假设输入数组是一个numpy数组.例如,reluprime(np.array([-1,1,2]))退货array([0, 1, 1]).


Jon*_*ler 5

if语句没有意义,因为对于整个数组,它只被评估一次.如果你想要数组的每个元素的if语句的等价物,你应该做类似的事情:

def reluprime(x):
    return np.where(x > 0, 1.0, 0.0)
Run Code Online (Sandbox Code Playgroud)

  • 这比Miriam的答案慢约3倍,但确实是原始代码中最自然的矢量化,并且通常是翻译`if`语句的正确方法. (3认同)