Я использую Cross Entropy с 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]. Проблема в том, что для обоих этих вычисленных выходных данных функция будет возвращать одно и то же значение перекрестной энтропии. Так как же нейронная сеть узнает, какой из выходных данных является правильным?