调用函数时Python中的值错误

时间:2018-12-13 19:52:16

标签: python python-3.x deep-learning

我收到以下代码的值错误:

def ReLu(x):
    if x>0:
        return x
    else:
        return 0

当我使用矩阵调用函数时发生错误

x = np.random.randn(4,4)
z = ReLu(x)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试在矩阵上执行ReLu函数,IIRC将采用零以下的值并将其“上移”到0,并保持正值不变。

正如其他人所建议的那样,您出了错的地方是您缺少了有关numpy api如何运行的一些基本原则。

我相信校正后的RELU函数将是:

def ReLu(x):
    x[x < 0] = 0

为什么?您在这里做的事情有三点。 第一个已解析的表达式x < 0返回另一个形状相同的numpy数组,除了存在“真”值(其中数组的元素小于零)和“假”值之外的其他地方。

表达式的下一个解析部分是选择numpy数组的“视图”。这基本上意味着“给我与我们之前定义的真实值匹配的数组元素。”

最后一步是为这些值分配所需的值,即0。

希望这会有所帮助!