Я углубляюсь в глубокое обучение, поэтому читаю «Нейронные сети и глубокое обучение» Майкла Нильсона. Я скачал его первую нейронную сеть и попробовал его на наборе данных, и он работал правильно. Затем я попытался создать свои собственные данные, чтобы понять, понимаю ли я, как данные передаются в нейронную сеть. Это мой код для создания данных:
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
...
Кто-нибудь знает, что не так с тем, как я передаю данные в нейронную сеть или что еще не так? Пожалуйста, помогите мне. Большое вам спасибо.