【问题标题】:passing relu function to all element of a numpy array [duplicate]将relu函数传递给numpy数组的所有元素[重复]
【发布时间】:2017-12-10 23:31:38
【问题描述】:

我正在尝试将 relu 函数传递给 numpy 数组的每个单独元素,当我使用 sigmoid 函数尝试它时,它可以工作,但使用 relu 函数,它会返回:

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

relu 函数:

def relu(x):
    return max(0, x)

sigmoid 函数:

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

我尝试做 relu(myArray) 但它返回 valueError,与 map(relu, myArray) 相同

它与 sigmoid 函数配合得很好,为什么会这样,我该如何解决?谢谢

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您需要numpy.maximum。常规的内置 max 不会通过数组输入进行广播。

    【讨论】:

      【解决方案2】:

      随便用

      result = map(relu, array)
      

      将您的函数应用于数组的每个元素。

          import numpy as np
      
          def relu(x):
              return max(0, x)
      
          array = np.arange(-10,10)
      
      
          result = map(relu, array)
          print(result)
      

      为我工作。

      【讨论】:

      • 如果您检查我问题的倒数第二句,我声明这样做会返回相同的错误
      • 我刚刚编辑了我的答案。如果您需要更多帮助,您能否为我提供更多代码? :)
      • 你可以告诉我你的数组是什么样子的,例如。
      • np.arange(9).reshape((3,3)) 这基本上是它的样子,你上面的答案解决了我的问题,但感谢你的关注!
      • 只是为了让您更深入地了解为什么这确实解决了您的问题,您的 reshape 将数组转换为数组数组。如果您想使用您的功能,您将需要类似:result = map(lambda x : map(relu, x), array)。对于这种情况,另一种解决方案更优雅,性能更高。 :)
      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多