нейронная сеть не учится вообще для простой проблемы - PullRequest
2 голосов
/ 01 мая 2020

Я углубляюсь в глубокое обучение, поэтому читаю «Нейронные сети и глубокое обучение» Майкла Нильсона. Я скачал его первую нейронную сеть и попробовал его на наборе данных, и он работал правильно. Затем я попытался создать свои собственные данные, чтобы понять, понимаю ли я, как данные передаются в нейронную сеть. Это мой код для создания данных:

import numpy as np


def function(x):
    """ If the first value of the row matrix is 1 the output will be 1,
    if zero, the output will be zero"""
    if x[0, 0] == 1:
        y = np.array([[1]])
    else:
        y = np.array([[0]])
    return y


def data_maker(data_size, split_ratio):
    """ Data size is the size of the data and the split ratio
     is the ratio between testing data and training data. """

    # make random lists of 3 by 1 numpy arrays consisting of zeros and ones.
    training_inputs = [np.random.randint(0, high=2, size=(3, 1)) 
                       for _ in range(int(split_ratio * data_size))]
    testing_inputs = [np.random.randint(0, high=2, size=(3, 1)) 
                      for _ in range(int((1 - split_ratio) * data_size))]

    training_outputs = [function(x) for x in training_inputs]
    testing_outputs = [function(x) for x in testing_inputs]

    training_data = list(zip(training_inputs, training_outputs))
    testing_data = list(zip(testing_inputs, testing_outputs))
    return training_data, testing_data

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

import function_data_maker
training_data, test_data = function_data_maker.data_maker(100000, 0.8)

import First_NN
net = First_NN.Network([3, 5, 1])
net.SGD(training_data, 30, 10, 3.0, test_data=test_data)

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

Epoch 0: 9973 / 19999
Epoch 1: 9973 / 19999
Epoch 2: 9973 / 19999
Epoch 3: 9973 / 19999
Epoch 4: 9973 / 19999
Epoch 5: 9973 / 19999
Epoch 6: 9973 / 19999
Epoch 7: 9973 / 19999
Epoch 8: 9973 / 19999
Epoch 9: 9973 / 19999
Epoch 10: 9973 / 19999
Epoch 11: 9973 / 19999
Epoch 12: 9973 / 19999
Epoch 13: 9973 / 19999
Epoch 14: 9973 / 19999
Epoch 15: 9973 / 19999
Epoch 16: 9973 / 19999
Epoch 17: 9973 / 19999
...

Кто-нибудь знает, что не так с тем, как я передаю данные в нейронную сеть или что еще не так? Пожалуйста, помогите мне. Большое вам спасибо.

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