Зарегистрируйтесь без указания e-mail всего за 1 минуту! Скорее нажмите сюда!
Amor Ex Machina? Maybe.
 

ЮжныйСеверный поток3+4+5+
пока ШайзеФюрер махт шайзе, о НЕЙРОСЕТЯХ мы поговорим))


➜ главная Домика
Вы не залогинились! Ваш статус в этом ДоМиКе - гость.
В домике онлайн: 0, замечено за сутки: 0

вернуться на 17 стр. списка тем

ProfMoriarti  
пока ШайзеФюрер махт шайзе, о НЕЙРОСЕТЯХ мы поговорим))
ProfMoriarti
а то и напишем какую-нибудь, чаще всего предлагают на курсах обучения сетку распознования треугольников, кругов и квадратов.
+++- +++
Изображения размещены в пяти папках в зависимости от класса названия папок соответствуют названию класса. В таблице 1 представлена информация о названии класса, количестве изображений для обучения и тестирования, результат, который должен получиться на выходе при соответствии данному классу. Пример фрагмента набора данных изображен на рисунке 1.

Таблица 1.

Информация о наборе данных

Название класса = Количество изображений для обучения = Количество изображений для тестирования = Название фигуры на выходе

Pentagon = 68 =21=пятиугольник

Sixer=71 =15=шестиугольник

Square=86=21=квадрат

Star=78=17=звезда

Tringle=78=19=треугольник


Разработка архитектуры нейронной сети

Для разработки нейронной сети можно использовать персептрон. Персептрон - это простейший вид нейронной сети. [8].

В разрабатываемой сети на вход будет подаваться изображение, на котором присутствует фигура.

Результатом работы сети должна быть информация о том, к какому классу относится фигура, представленная на изображении.

Для решения данной задачи использована модель многослойного персептрона с двумя скрытыми слоями. Входной слой состоит из n нейронов, где n количество пикселей изображения (n=5625). Первый и второй скрытые слои содержат m и k нейронов соответственно, где m = 256 и k = 256. Выходной слой содержит 5 нейронов, что соответствует количеству классов изображений. Архитектура разрабатываемой сети представлена на рисунке 2.

Рисунок 2. Архитектура разрабатываемой нейронной сети

Реализацию нейронной сети для распознавания изображений решено проводить с использованием языка программирования Python, поскольку в нём есть необходимые библиотеки для реализации поставленной задачи:

tensorflow [1] - открытая программная библиотека для машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов, достигая качества человеческого восприятия;

keras [2] - библиотека с открытым исходным кодом, которая позволяет создавать нейронные сети. Нацелена на оперативную работу с сетями глубинного обучения;

numpy [3] - это расширение, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами;

matplotlib [4] - библиотека для графической визуализации данных.
ProfMoriarti  
wie gefaellt mir faschisten-фюрерство
ProfMoriarti
wie gefaellt mir faschisten-фюрерство (как мне нравится фашистен-фюрер))
после алгоритма, заданного в Плюшевом домике ihrer scheisse transformiert in ))
( его дерьмоглотство направлено внутрь его самого))
ProfMoriarti  
Чтобы в целом повторить последовательность построения
ProfMoriarti
нейросети,-
В НС нейроны отвечают за выделение определенного ПРИЗНАКА (здесь -от 0 до 9), при этом некоторое количество нейронов организовано в слои. Несколько слоев нейронов могут называться полноценной НС.

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

Во второй части вы попробовали создать свою первую модель нейронной сети. Подгрузили в ноутбук основу Sequential, которая отвечает за построение модели, и создали начальную модель: model = Sequential(). Но она выглядела как пустая коробка, в которую необходимо что-то положить. И первым стал слой Dense (полносвязный слой). Так появилась модель, но ее еще нужно было обучить, и для этого вы указали оптимизатор и функцию потерь при помощи метода. compile().
# Компиляция модели!Ссылки Запрещены!pile(loss='categorica- l_crossentropy', optimizer='adam', metrics=['accuracy'])
Завершили все это вызовом метода. summary(), посмотрев, как выглядит структура НС.
# Вывод структуры модели!Ссылки Запрещены!mmary())
utils. plot_model(model, to_file='model_plot. png', show_shapes=True, show_layer_names=False)

Затем вы перешли к практике и решили первую задачу по распознаванию рукописных цифр. Для этого импортировали все необходимые инструменты и загрузили данные MNIST. Определили форму массива данных и представление данных в виде картинки.

Преобразовали данные для модели НС, превратив картинку 28x28 пикселов в последовательность из 784 чисел. Не оставили без внимания и метки классов. Чтобы сеть лучше классифицировала, перевели метки в формат one hot encoding. По изученной схеме создали НС и приступили к ее обучению.
model. fit(x_train, y_train, batch_size=128, epochs=15, verbose=1)

В завершение проверили, как обученная НС распознает отдельные изображения рукописных цифр из набора, на котором сеть не обучалась.
ProfMoriarti  
обучение нейросети
ProfMoriarti
(и одновременно вычисление точности)

Делается оператором
model. fit(x_train, # обучающая выборка, входные данные
y_train, # обучающая выборка, выходные данные
batch_size=128, # кол-во примеров, которое обрабатывает нейронка перед одним изменением весов
epochs=15, # количество эпох, когда нейронка обучается на всех примерах выборки
verbose=1) # 0 - не визуализировать ход обучения, 1 - визуализировать

в результате можно получить
+++- +++
Epoch 1/15
469/469 [===- =] - 4s 5ms/step - loss: 0. 2024 - accuracy: 0. 9389
Epoch 2/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0754 - accuracy: 0. 9765
Epoch 3/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0487 - accuracy: 0. 9845
Epoch 4/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0345 - accuracy: 0. 9891
Epoch 5/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0254 - accuracy: 0. 9916
Epoch 6/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0204 - accuracy: 0. 9931
Epoch 7/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0189 - accuracy: 0. 9936
Epoch 8/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0169 - accuracy: 0. 9941
Epoch 9/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0141 - accuracy: 0. 9953
Epoch 10/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0117 - accuracy: 0. 9957
Epoch 11/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0134 - accuracy: 0. 9954
Epoch 12/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0132 - accuracy: 0. 9955
Epoch 13/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0082 - accuracy: 0. 9974
Epoch 14/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0074 - accuracy: 0. 9977
Epoch 15/15
469/469 [===- =] - 2s 5ms/step - loss: 0. 0148 - accuracy: 0. 9954
ProfMoriarti  
тем временем
ProfMoriarti
фашистенФюрер и
х е р тути
с куколдом и еще каким-то уродом умоляют вставить им расслабляющую клизьму))
ProfMoriarti  
модель нейросети
ProfMoriarti
# Создание последовательной модели
model = Sequential()

# Добавление полносвязного слоя на 800 нейронов с relu-активацией
model. add(Dense(800, input_dim=784, activation='relu'))

# Добавление полносвязного слоя на 400 нейронов с relu-активацией
model. add(Dense(400, activation='relu'))

# Добавление полносвязного слоя с количеством нейронов по числу классов с softmax-активацией
model. add(Dense(CLASS_COUNT, activation='softmax'))
ProfMoriarti  
Следующей строкой кода вы скомпилируете модель:
ProfMoriarti
!Ссылки Запрещены!pile(loss='categorica- l_crossentropy', optimizer='adam', metrics=['accuracy'])
В методе. compile() вы назначаете функцию ошибки ('categorical_crossentropy'), оптимизатор нейронной сети ('adam') и метрики, которые будут подсчитываться в процессе обучения нейросети (['accuracy']).

Метод. summary() выведет на экран структуру вашей нейронной сети в виде таблицы:

[ ]
# Компиляция модели!Ссылки Запрещены!pile(loss='categorica- l_crossentropy', optimizer='adam', metrics=['accuracy'])

# Вывод структуры модели!Ссылки Запрещены!mmary())
Функция plot_model() модуля utils нарисует наглядную схему (граф) нейронной сети, она удобна для понимания и более сложных моделей.

Эта функция принимает следующие аргументы:

model - модель, схему которой вы хотите построить (обязательный параметр);
to_file - имя файла или путь к файлу, в который сохраняется схема (обязательный параметр);
show_shapes - Показывать или нет формы входных/выходных данных каждого слоя (необязательный параметр, по умолчанию False);
show_layer_names - показывать или нет название каждого слоя (необязательный параметр, по умолчанию True).
[ ]
utils. plot_model(model, to_file='model_plot. png', show_shapes=True, show_layer_names=False)
Здесь вы впервые сталкиваетесь с сохранением данных.

Сейчас сохранение графа модели произойдёт в хранилище виртуальной машины ноутбука. Найти сохраненный файл можно, нажав на иконку "Файлы" в левой части рабочего пространства Google Colab.

В данном случае при завершении сеанса все файлы будут удалены вместе с виртуальной машиной.

Если необходимо воспользоваться файлами в дальнейшем, можно сохранить их на свой Google-диск - это постоянное хранилище. Для этого необходимо подключить его:

from google. colab import drive
drive. mount('/content/drive/')-
Необходимо перейти по ссылке и разрешить доступ.

Теперь данные могут быть загружены на диск, но для этого необходимо указывать полный путь для сохранения.
ProfMoriarti  
# Компиляция модели
ProfMoriarti
# Компиляция модели!Ссылки Запрещены!pile(loss='categorica- l_crossentropy', optimizer='adam', metrics=['accuracy'])

# Вывод структуры модели!Ссылки Запрещены!mmary())
ProfMoriarti  
обучение
ProfMoriarti
model. fit(x_train, # обучающая выборка, входные данные
y_train, # обучающая выборка, выходные данные
batch_size=128, # кол-во примеров, которое обрабатывает нейронка перед одним изменением весов
epochs=15, # количество эпох, когда нейронка обучается на всех примерах выборки
verbose=1) # 0 - не визуализировать ход обучения, 1 - визуализировать
ProfMoriarti  
итого надо настроить
ProfMoriarti
все весы
724+1 на 800 + 801 на 400+401 на 10
Итого 952410 весов надо настроить!
подумать только почти миллион

а 15 эпох - 15 миллионов и выполняется менее минуты! = model. fit

Тук-тук-тук! Кто в домике живет? Наверное, мышка-норушка, как всегда... Ну там еще зайчик-побегайчик, лисичка-сестричка... А вас тама, похоже, нет!

Почему? Да потому что на Мейби нужно сначала зарегистрироваться, а потом подать заявку на прописку в ДоМиКе.

Попасть в "15 мин. Славы" ⇩