首页 > 解决方案 > 错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

问题描述

我正在尝试实现一个 maxnet NN,但在尝试定义我的激活函数时出现了该错误,我该如何摆脱这个错误?

     import numpy as np

    def AF (Self):
       if x>0:
     return x
   return 0



     x= np.array([1.2, 1.1, 0.9, 0.95, 1])
     eps= 0.15
     y=np.zeros(5)
     count=0
     temp=sum(x)

   while True:
      for i in range (5):
      val= x[i]- eps*temp +eps*x[i]
      y= np.append(AF(val))
      x= y.copy()
      count+=1
      if sum(y)== max(y):
         break


   print(y)

标签: python-3.x

解决方案


当您尝试将数组用作布尔值时会引发此错误。在您的AF函数中,您将获得一个数组而不是单个数字,因此它不知道它是否应该评估为TrueFalse何时执行if x>0:.

在您的代码中发生这种情况是因为您使用x而不是传递的参数,请尝试重新定义您的函数,例如:

def AF(val):
  if val > 0:
      return val
  return 0

推荐阅读