<jupyter_start><jupyter_text>Импорт библиотек<jupyter_code>import numpy as np
import matplotlib.pyplot as plt

from nn_2_layer import NeuralNetwork
from nn_3_layer import NeuralNetworkExt

from FitPred import fit, predict, result<jupyter_output><empty_output><jupyter_text>Импорт данных<jupyter_code># загрузка файла с датасетом рукописных чисел - тренировочный датасет
with open('mnist_dataset/mnist_train.csv', 'r') as file:
    data_train = file.readlines()

# загрудка тестового набора данных
with open('mnist_dataset/mnist_test.csv', 'r') as file:
    data_test = file.readlines()<jupyter_output><empty_output><jupyter_text>Двухслойная (один скрытый слой) нейронная сеть<jupyter_code># количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = np.arange(50,1000, 50)
output_nodes = 10
# коэффициент обучения
learning_rate = 0.1
# количество эпох
epochs = 1

# списко для записи результатов
results = []

for i in hidden_nodes:
    print(f"количество скрытых узлов: {i}")
    # экземпляр нейронной сети
    n = NeuralNetwork(input_nodes, i, output_nodes, learning_rate)
    # обучение нейросети
    fit(epochs=epochs, network=n, train=data_train, out_nodes=output_nodes)
    # прогнозирование
    scorecard = predict(network=n, test = data_test)
    # вывод результата
    res = result(scorecard)
    results.append(res)
    
plt.plot(hidden_nodes, results)
# количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = 800
output_nodes = 10
# коэффициент обучения
learning_rate = [0.1, 0.2, 0.3]
# количество эпох
epochs = 1

# списко для записи результатов
results = []

for i in learning_rate:
    print(f"сокрость ообучения: {i}")
    # экземпляр нейронной сети
    n = NeuralNetwork(input_nodes, hidden_nodes, output_nodes, i)
    # обучение нейросети
    fit(epochs=epochs, network=n, train=data_train, out_nodes=output_nodes)
    # прогнозирование
    scorecard = predict(network=n, test = data_test)
    # вывод результата
    res = result(scorecard)
    results.append(res)
plt.plot(learning_rate, results)
# количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = 800
output_nodes = 10
# коэффициент обучения
learning_rate = 0.1
# количество эпох
epochs = [1, 3, 5, 7, 9]

# списко для записи результатов
results = []

for i in epochs:
    print(f"количество эпох: {i}")
    # экземпляр нейронной сети
    n = NeuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
    # обучение нейросети
    fit(epochs=i, network=n, train=data_train, out_nodes=output_nodes)
    # прогнозирование
    scorecard = predict(network=n, test = data_test)
    # вывод результата
    res = result(scorecard)
    results.append(res)
plt.plot(epochs, results)<jupyter_output><empty_output><jupyter_text>С учетом предобрабоки данных: выравнивание рукописных цифр<jupyter_code># количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = 800
output_nodes = 10
# коэффициент обучения
learning_rate = 0.1
# экземпляр нейронной сети
n2 = NeuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
# обучение нейросети
fit(epochs=7, network=n2, train=data_train, out_nodes=output_nodes, deskew_dat=True)
# прогнозирование
scorecard2 = predict(network=n2, test=data_test, deskew_dat=True)
# вывод результата
result(scorecard2)
# количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = 800
output_nodes = 10
# коэффициент обучения
learning_rate = 0.1
# экземпляр нейронной сети
n3 = NeuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
# обучение нейросети
fit(epochs=7, network=n3, train=data_train, out_nodes=output_nodes, deskew_dat=True, elastic=(36, 6))
# прогнозирование
scorecard3 = predict(network=n3, test=data_test, deskew_dat=True, elastic=(36, 6))
# вывод результата
result(scorecard3)
# количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes = 800
output_nodes = 10
# коэффициент обучения
learning_rate = 0.1
# экземпляр нейронной сети
n4 = NeuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
# обучение нейросети
fit(epochs=7, network=n4, train=data_train, out_nodes=output_nodes, deskew_dat=True, elastic=(8, 4))
# прогнозирование
scorecard4 = predict(network=n4, test=data_test, deskew_dat=True, elastic=(8, 4))
# вывод результата
result(scorecard4)<jupyter_output>Эпоха 1: 100%|██████████| 60000/60000 [03:52<00:00, 257.91it/s]
Эпоха 2: 100%|██████████| 60000/60000 [03:55<00:00, 254.57it/s]
Эпоха 3: 100%|██████████| 60000/60000 [03:51<00:00, 259.16it/s]
Эпоха 4: 100%|██████████| 60000/60000 [03:52<00:00, 257.53it/s]
Эпоха 5: 100%|██████████| 60000/60000 [03:51<00:00, 259.70it/s]
Эпоха 6: 100%|██████████| 60000/60000 [03:50<00:00, 259.97it/s]
Эпоха 7: 100%|██████████| 60000/60000 [03:55<00:00, 254.44it/s]
Обработка тестовых данных: 100%|██████████| 10000/10000 [00:12<00:00, 796.39it/s]<jupyter_text>Задание параметров  трехслойной (один скрытый слой) нейронной сети<jupyter_code># количество входных, скрытых и выходных узлов
input_nodes = 784
hidden_nodes1 = 500
hidden_nodes2 = 300
output_nodes = 10
# коэффициент обучения
learning_rate = 0.05
# экземпляр нейронной сети
n5 = NeuralNetworkExt(input_nodes, hidden_nodes1, hidden_nodes2, output_nodes, learning_rate)
# обучение нейросети
fit(epochs=2, network=n5, train=data_train, out_nodes=output_nodes, deskew_dat=True)
# прогнозирование
scorecard5 = predict(network=n5, test=data_test, deskew_dat=True)
# вывод результата
result(scorecard5)<jupyter_output>Эпоха 1: 100%|██████████| 60000/60000 [03:19<00:00, 300.21it/s]
Эпоха 2: 100%|██████████| 60000/60000 [03:10<00:00, 314.25it/s]
Обработка тестовых данных: 100%|██████████| 10000/10000 [00:05<00:00, 1940.01it/s]
{'fraction_non_alphanumeric': 0.12187007529329365, 'fraction_numerical': 0.07459289091227456, 'mean_word_length': 6.230379746835443, 'pattern_counts': {'":': 0, '<': 30, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '526667', 'license': 'MIT', 'n_tokens_mistral': 2694, 'n_tokens_neox': 2548, 'n_words': 483, 'path': 'research.ipynb', 'repo_name': 'AnglewoodJack/yet_another_mnist_recognizer', 'size': '5711'}