【发布时间】:2019-10-13 14:10:05
【问题描述】:
我正在使用带有 Softmax 的交叉熵作为我的神经网络的损失函数。 我写的交叉熵函数如下:
def CrossEntropy(calculated,desired):
sum=0
n=len(calculated)
for i in range(0,n):
sum+=(desired[i] * math.log(calculated[i])) + ((1-desired[i])* math.log(1-calculated[i]))
crossentropy=(-1)*sum/n
return crossentropy
现在让我们假设 期望的输出是 [1,0,0,0],我们正在测试它的 两个计算输出,即 a=[0.1,0.9,0.1,0.1 ] 和 b=[0.1,0.1,0.1,0.9]。 问题在于,对于这两个计算输出,该函数将返回完全相同的交叉熵值。 那么神经网络如何知道哪个输出是正确的呢?
【问题讨论】:
-
它被反向传播覆盖了。
-
您的 CE 用于二进制分类,即您有 2 个输出类。对于您的样本,因为您有 4,所以上述 CE 不正确。你应该这样做: - sum(desired * log(calculated))
标签: neural-network classification conv-neural-network softmax cross-entropy