【问题标题】:Value Error in Python while calling a function [duplicate]调用函数时Python中的值错误[重复]
【发布时间】:2019-05-15 02:24:07
【问题描述】:

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

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

【问题讨论】:

  • 你不能用矩阵来调用它。错误消息告诉你原因。
  • 你的函数需要一个单一的值,但是你给它传递了一个向量。如果你想让它作为一个向量函数工作,你必须使用向量化操作来编写。
  • Jaswanth,函数ReLu 应该做什么?如果您希望我们为您提供帮助,请澄清这一点

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


【解决方案1】:

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

正如其他人所建议的那样,您的错误之处在于您缺少一些关于 numpy api 如何运行的基本原则。

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

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

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多