我收到以下代码的值错误:
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()
答案 0 :(得分:1)
您似乎正在尝试在矩阵上执行ReLu函数,IIRC将采用零以下的值并将其“上移”到0,并保持正值不变。
正如其他人所建议的那样,您出了错的地方是您缺少了有关numpy api如何运行的一些基本原则。
我相信校正后的RELU函数将是:
def ReLu(x):
x[x < 0] = 0
为什么?您在这里做的事情有三点。
第一个已解析的表达式x < 0
返回另一个形状相同的numpy数组,除了存在“真”值(其中数组的元素小于零)和“假”值之外的其他地方。
表达式的下一个解析部分是选择numpy数组的“视图”。这基本上意味着“给我与我们之前定义的真实值匹配的数组元素。”
最后一步是为这些值分配所需的值,即0。
希望这会有所帮助!