Нейронная сеть угадывает «3» каждый раз после обучения - PullRequest
0 голосов
/ 10 июня 2019

Я создаю нейронную сеть для обнаружения рукописных цифр. На данный момент я только обучаю его примерно 200 цифрам, которые я вылез из Интернета и обработал, чтобы они были черными или белыми (1 или 0).

Когда я тренирую свою нейронную сеть с 10 из этих изображений и тестирую на всех 200, я получаю точность 61,5%, но если я тестирую на всех 200, я получаю точность 10%, потому что она угадывает 3 для всего. Почему это происходит. Я пытался изменить размер слоев, но это не помогает. Я думаю, что есть ошибка с логикой моей нейронной сети

def sigmoid(z):
    return 1/(1+np.exp(-z))

def sigmoidd(z):
    return z*(1-z)


def train(x, y, iterations = 1000):
    synoptic_weights1 = 2*np.random.random((400,12)) -1
    synoptic_weights2 = 2*np.random.random((12,12)) - 1
    synoptic_weights3 = 2*np.random.random((12,10)) - 1



    #print(synoptic_weights)

    for i in range(1000):

        hidden_layer_1 = sigmoid(np.dot(x, synoptic_weights1))

        hidden_layer_2 = sigmoid(np.dot(hidden_layer_1, synoptic_weights2))

        outputs = sigmoid(np.dot(hidden_layer_2, synoptic_weights3))
        #print(outputs)
        #print(answers)

        output_error = y-outputs

        output_delta = output_error*sigmoidd(outputs)

        hidden_error2 = output_delta.dot(synoptic_weights3.T)

        hidden_delta2 = hidden_error2 * sigmoidd(hidden_layer_2)

        hidden_error1 = hidden_delta2.dot(synoptic_weights2.T)

        hidden_delta1 = hidden_error1 * sigmoidd(hidden_layer_1)        
        synoptic_weights3 += hidden_layer_2.T.dot(output_delta)
        synoptic_weights2 += hidden_layer_1.T.dot(hidden_delta2)
        synoptic_weights1 += x.T.dot(hidden_delta1)


    return synoptic_weights1, synoptic_weights2, synoptic_weights3

Я ожидаю, что при тестировании получится приличная точность для всех 200 изображений, а не 10%

1 Ответ

0 голосов
/ 10 июня 2019

Я думаю, вы должны добавить больше данных для тренировок.Потому что 10 изображений меньше для обучения нейронной сети.Нейронные сети нуждаются в больше данных для изучения.Это, безусловно, повысит точность ваших моделей.

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