Как рассчитать точность? - PullRequest
0 голосов
/ 21 января 2020

Я борюсь за то, чтобы вычислить точность из моей нейронной сети. Я использую базу данных MNIST с алгоритмом обратного распространения. Все сделано с нуля.

Мой частичный код выглядит следующим образом:

for x in range(1, epochs+1):
   #Compute Feedforward
   #...
   activationValueOfSoftmax = softmax(Z2)

   #Loss
   #Y are my labels
   loss = - np.sum((Y * np.log(activationValueOfSoftmax)), axis=0, keepdims=True)
   cost = np.sum(loss, axis=1) / m #m is 784

   #Backpropagation
   dZ2 = activationValueOfSoftmax - Y
   #the rest of the parameters
   #...
   #parameters update via Gradient Descent
   #...

Можно ли из этого вычислить точность или мне нужно переделать некоторые части моего NN?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 21 января 2020

Я полагаю, что у вас есть 10 векторов размера 1 для вашего тестового набора (10 цифр), и вы извлекли свою гипотезу с помощью прямой опоры с помощью вашего тренировочного набора.

correct = 0

    for i in range(np.shape(y)[0]):
        #argmax retrieves index of max element in hypothesis
        guess = np.argmax(hyp[i, :])
        ans= np.argmax(y[i, :])
        print("guess: ", guess, "| ans: ", ans)
        if guess == match:
            correct = correct + 1;

accuracy = (correct/np.shape(y)[0]) * 100

Вы должны снова выполнить опору вперед с вашими весами и данными TEST SET, чтобы получить вектор гипотезы (должен иметь размер 10), затем вы можете l oop через все значения y в тесте. установить, используя переменную счетчика (правильно), чтобы получить правильную сумму. Чтобы получить процент, вы просто делите правильное число тестовых наборов на количество примеров и умножаете на 100.

Если вы хотите получить точность от обучающего набора, просто используйте свою гипотезу (в вашем случае ActivationValueOfSoftmax) и выполните то же самое.

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...