首页 > 解决方案 > 调用函数时Python中的值错误

问题描述

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

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()

标签: pythonpython-3.xdeep-learning

解决方案


看起来您正在尝试在矩阵上执行 ReLu 函数,IIRC 将采用零下值并将它们“向上移动”到 0,并且将保持正值不变。

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

我相信,修正后的 RELU 函数是:

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

为什么?你在这里做的是三重的。第一个解析的表达式x < 0返回另一个相同形状的 numpy 数组,除了数组元素小于零的“真”值和其他地方的“假”值。

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

最后一步是为这些值分配您想要的值,即 0。

希望这会有所帮助!


推荐阅读