Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8124

.pdf
Скачиваний:
0
Добавлен:
23.11.2023
Размер:
1.4 Mб
Скачать

11

http://deepleaming.net/data/mnist/mnist.pkl.gz с сайта Лаборатории машинного обучения Университета Монреаля, сформированный на основе базы данных

MNIST, который содержит 70 000 изображений рукописных цифр,

разделенных на три набора:

1)training_data - набор из 50 000 изображений предназначен для обучения нейронных сетей;

2)validation_data - набор из 10 000 изображений предназначен для текущей оценки работы алгоритма обучения и подбора параметров обучения (используется в последующих лабораторных работах);

3)test_data - набор из 10 000 изображений предназначен для проверки

работы нейронной сетей.

Каждый набор состоит из двух списков: списка изображений (в градациях серого) и соответствующего списка цифр в диапазоне от 0 до 9. Изображение представлено в виде одномерного numpy-массива размера 784 = 28x 28

значений от 0 до 1, где 0 соответствует черному цвету пиксела, а 1 - белому.

П Загрузите архив http://deeplearning.net/data/mnist/mnist.pkl.gz и сохраните его в директории Network1.

Функции для работы с базой данных MNIST целесообразнее вынести в отдельный файл. Создайте новый файл mnist_loader и сохраните его в директории Networkl. Скопируйте в окно программы mnist_loader .py

следующие команды и впишите свои данные:

mnist_loader.py —

Модуль для подключения и использования базы данных

MNIST.

Группа:[Указать номер группы] ФИО:[Указать ФИО студента]

.

import gzip # библиотека для сжатия и распаковки файлов gzip и gunzip. import pickle # библиотека для сохранения и загрузки сложных объектов Python.

31

12

import numpy as np # библиотека для работы с матрицами def load data():

f = gzip.open('mnist.pkl.gz', 'rb') # открываем сжатый файл gzip в двоичном режиме

training data, validation data, test data = pickle.load(f, encoding='latin1') # загружай таблицы из файла

f.close() # закрываем файл return (training data, validation data, test data)

Для использования базы данных MNIST в нашей программе необходимо скорректировать форматы наборы training_data, validation_data и test_data. Это делается в функции load_data_wrapper. Скопируйте в файл mnist_loader следующий программный код.

def load_data_wrapper():

tr d, va d, te d = load data() # инициализация наборов данных в формате MNIST

training inputs = [np.reshape(x, (784, 1)) for x in tr d[0]] # преобразование массивов размера 1 на 784 к

массивам размера 784 на 1 training results = [vectorized result(y) for y in tr d[1]] # представление цифр от 0 до 9 в виде массивов размера 10 на 1

training data = zip(training inputs, training results) # формируем набор обучающих данных из пар (x, y)

validation inputs = [np.reshape(x, (784, 1)) for x in va d[0]] # преобразование массивов размера 1 на 784

к массивам размера 784 на 1 validation data = zip(validation inputs, va d[1]) # формируем набор данных проверки из пар (x, y)

test inputs = [np.reshape(x, (784, 1)) for x in te

32

13

d[0]] # преобразование массивов размера 1 на 784 к

массивам размера 784 на 1 test data = zip(test inputs, te d[1]) # формируем набор тестовых данных из пар (x, y)

return (training data, validation data, test data)

Данная функция преобразует training_data в список, содержащий 50 000 пар (x, у), где x является 784-мерным numpy-массивом, содержащим входное изображение, а у - это 10-мерный numpy-массив, представляющий собой вектор, у которого координата с порядковым номером,

соответствующим цифре на изображении, равняется единице, а остальные координаты нулевые. Аналогичные преобразования делаются для наборов validation_data и test_data.

Для преобразования числа в вектор-столбец (10-мерный numpy массив),

используется следующая функция vectorized_result. Скопируйте ее программный код в файл mnist_loader.

def vectorized result(j): e = np.zeros((10, 1)) e[j] =

1.0return e

ПСохраните и закройте файл mnist_loader.py.

7) Запуск программы

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

\NeuralNetwork:

>>>import os

>>>os.chdir ('C: \ \NeuralNetwork\\Network1' )

Следующие команды используются для подключения модуля mnist_loader

и инициализации наборов данных для обучения нейронной сети:

33

14

>>>import mnist loader

>>>training data, validation data, test data = mnist

loader.load data wrapper()

Подключите созданный Вами модуль network. py:

>>>import network

При этом выполниться написанная в нем программа, выводящая информацию о нейронной сети.

Создайте нейронную сеть для распознавания рукописных цифр:

>>>net = network.Network([784, 30, 10])

Параметры, указанные при вызове данного метода, определяют топологию создаваемой сети. Таким образом, в результате выполнения команды будет создана сеть, состоящая из трех слоев: входной слой сети состоит из 784-х

нейронов; внутренний слой из 30 нейронов и выходной слой из 10 нейронов.

Запустите процедуру обучения созданной нейронной сети, включающую

30 эпох:

>>>net.SGD(training data, 30, 10, 3.0, test data=test

data)

Параметры, указанные при вызове метода SGD: обучающая выборка,

количество эпох обучения, размер подвыборки, скорость обучения,

тестирующая выборка.

Обучение может занять несколько минут. В ходе обучения будет выдаваться информация о пройденных эпохах (см. рис. 2). Для каждой эпохи выводится отношение количества правильно распознанных цифр к общему количеству цифр в тестовой выборке. Например, запись Epoch 6: 9374 / 10000

говорит о том, что в результате эпохи обучения с номером 6 достигнута

34

15

точность распознавания 0.94.

Рис. 1. Результат работы программы

35

ЛАБОРАТОРНАЯРАБОТАРАБОТА№4. ВИЗУАЛИЗАЦИЯ СТРУКТУР СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА С

ИСПОЛЬЗОВАНИЕМ ОТЕЧЕСТВЕННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ОТКРЫТЫМ ИСХОДНЫМ КОДОМ (МОЙ ОФИС, LIBREOFFICE, DRAWIO, INKSCAPE) В ИНТЕРЕСАХ ОРГАНИЗАЦИИ КОЛЛЕКТИВНОЙ РАБОТЫ И КОНТРОЛЯ ТРЕБОВАНИЙ ПРОЕКТА СО СТОРОНЫ ЗАКАЗЧИКА

Блок-схемы — это схемы, на которых показаны этапы процесса. Простые блок-схемы легко создавать, а благодаря простоте и наглядности фигур они также удобны для восприятия.

Примечание: Вы также можете автоматически создать простую блок-схему на основе данных, используя визуализатор данных в DrawIO.

Шаблон простой блок-схемы в DrawIO включает фигуры, которые можно использовать для описания большого количества процессов. Он особенно полезен для отображения простых бизнес-процессов, таких как процесс разработки предложения, показанный на приведенном ниже рисунке.

36

Более новые версииИнтернетOffice 2010Office 2007

Создание блок-схемы

1.Запустите DrawIO.

2.Выберите категорию Блок-схема.

3.Дважды щелкните значок Простая блок-схема.

37

4.Для каждого этапа документируемого процесса перетащите в документ соответствующую фигуру блок-схемы.

5.Чтобы соединить элементы блок-схемы, наведите указатель мыши на первую фигуру, и щелкните стрелку, указывающую на фигуру, с которой требуется создать соединение. Если вторая фигура находится не рядом с первой, необходимо перетащить маленькую стрелку к центру второй фигуры.

6.Чтобы добавить текст для фигуры или соединительной линии, выделите ее и введите текст. По завершении ввода текста щелкните в пустой области страницы.

7.Чтобы изменить направление стрелки соединительной линии, выберите соединение, а затем на вкладке Фигура в группе Стили фигур щелкните пункт Линия, наведите указатель на пункт Стрелки и выберите нужное направление и вид стрелки.

Автоматическое выравнивание и интервалы

1.Нажмите сочетание клавиш CTRL+A, чтобы выбрать все объекты на странице.

2.На вкладке Главная в группе Упорядочение нажмите кнопку Положение и выберите пункт Автовыравнивание и определение интервалов.

Если это не привело к нужному результату, отмените ее, нажав сочетание клавиш CTRL+Z, и воспользуйтесь другими параметрами меню

кнопок Выравнивание и Положение.

38

Что представляют блок-схемы

При открытии шаблона Простая блок-схема открывается набор элементов Фигуры простой блок-схемы. Каждая фигура в этом наборе

представляет собой тот или иной этап процесса. Но фигуры не имеют какогото универсального смысла, их значение определяется создателями и пользователями блок-схем. В большинстве блок-схем используется три или

39

четыре вида фигур, и этот диапазон расширяется только по специфической необходимости.

При этом названия фигур в Visio указывают на их применение. Ниже описаны наиболее распространенные фигуры.

Начало/конец. Эту фигуру следует использовать для представления первого и последнего этапа процесса.

Процесс. Фигура представляет собой стандартный этап процесса. Это одна из наиболее часто используемых фигур в любом процессе.

Решение. Эта фигура используется в точке, где выбор следующего этапа зависит от принятого решения. Вариантов может быть несколько, но чаще всего их два: "да" и "нет".

Подпроцесс. Эту фигуру следует использовать для представления ряда этапов, которые в совокупности образуют подпроцесс, определенный в другом месте (часто на другой странице того же документа). Такой подход удобен, если блок-схема получается слишком большой и сложной.

Документ. Эта фигура представляет этап, на котором создается документ.

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]