因此,当我运行此代码时,我收到一个名为 “TypeError: 'int' object is not callable”
的错误。我做了一些研究,我认为这可能是由于交叉熵变量被声明为错误的类型。我非常感谢您提供一些帮助来弄清楚为什么我会收到此错误。基本上,我正在做的就是获取两个列表并尝试通过代码找出这两个列表的交叉熵。
import numpy as np
# Write a function that takes as input two lists Y, P,
# and returns the float corresponding to their cross-entropy.
def cross_entropy(Y, P):
Y = np.float_(Y)
P = np.float_(P)
crossentropy = 0.0
for i in range(len(Y)):
crossentropy+=-1(Y[i]*np.log(P[i]) + (1-Y[i])*np.log(1-P[i]))
return crossentropy
最佳答案
您的代码和计算有几个问题超出了您所询问的问题,但主要问题是:
x = 10
-1(x)
这不起作用,您需要指定乘法,因为 Python 中的 -1(x)
表示“使用参数调用 -1
(作为函数) x
”。
即:
crossentropy += -1 * (Y[i]*np.log(P[i]) + (1-Y[i])*np.log(1-P[i]))
请注意,之后您可能会收到有关被零除的警告,具体取决于函数的输入。
关于python - 获取两个列表的交叉熵时,Python 中的“int”对象不可调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59557925/