Ты когда-нибудь слышал о нейронных сетях? А пользовался Яндекс.Алисой? Может, смотришь ТикТок? А ты знал, что для работы этих приложений как раз и используются эти самые нейросети?
Нейросеть – это программа, работа которой похожа на работу нашего мозга. Её особенность в том, что она может решать сложные задачи и учиться на своих ошибках, в отличие от обычных программ. И они применяются всюду: озвучивают и распознают тексты, распознают изображения, и многое другое.
Сегодня я тебя научу подключать и обучать нейросеть, которая распознает картинки – имя этой нейросети – VGG16. Дело в том, что на неё напал ужасный вирус HackAtack и удалил часть её данных, теперь у неё нет файлов и картинок для работы, и она разучилась понимать изображения с цифрами, поэтому нам нужно заново загрузить в нее все необходимое и обучить.
А теперь давай узнаем всё необходимое, чтобы помочь VGG16.
Нейросети состоят из нейронов (как и наш мозг) – маленьких вычислительных кусочков программы. Нейроны соединяются в слои – а слои – в нейросеть. Нейроны обмениваются информацией между друг другом. Чтобы нейросеть заработала и могла что-то распознавать, в неё сначала загружают какую-то обучающую информацию – например, в VGG16 мы будем загружать картинки с цифрами, каждую из них она проанализирует и запомнит. А главная характеристика нейросетей – их точность – то есть насколько хорошо она усвоила материал. VGG16 умеет распознавать любые изображения и имеет точность 92.7%, и чтобы достичь этого результата она училась на протяжении нескольких недель. Мы с тобой сегодня не будем работать со сложными изображениями, а научим нейросеть распознавать цифры.
Итак, нам потребуется давать команды VGG16, чтобы привести её в норму, а для этого нам нужно «говорить» с ней на специальном языке, который она понимает – это язык программирования Питон, команды на нем пишутся на английском языке. Не переживай, если не знаешь, как им пользоваться, я расскажу тебе, какие команды нам понадобятся, чтобы управлять VGG16.
Что ж, для того, чтобы заново подключить файлы к VGG16, мы будем использовать команды:
или мы можем использовать эту команду, если нужный нам файл хранится в библиотеке (библиотека – это папка, в которой несколько файлов):
Зеленым цветом написано пояснение каждой команды. (в Питоне после # можно писать любой текст, и программа его не увидит и не выполнит – это называется «комментарий»).
Чтобы идти дальше, давай поговорим о присваивании в Питоне. Например, у тебя есть такая команда:
Слово слева называется «переменная» (как в уравнениях в школе), а знак «=» означает, что мы приравниваем то, что слева от знака, к тому, что справа от знака. То есть после выполнения этой команды переменная “nabor” равняется 5 (хранит 5 в себе) – это и называется присваивание.
Точно так же, как и в предыдущем примере, мы можем загрузить в нашу программу с нейросетью картинки, по которым будет учиться нейросеть. Для этого используем команду:
которая значит «загрузи файл с названием ... »
которая означает «из папки с названием ... загрузи файл с названием ... ».
Для VGG16 загрузка необходимых файлов выглядит так:
В файле mnist хранятся картинки и их названия. В этой команде мы делим все картинки на 2 набора – nabor_1 и nabor_2 (для того, чтобы нейросети было легче с ними работать) и названия картинок сохраняем в nazvanie_1 и nazvanie_2, говорим программе, чтобы она загрузила в эти наборы данные из файла с картинками mnist, который мы подключили ранее.
Теперь всё необходимое подключено, и после этого VGG16 можно обучать.
В Питоне нейросеть обозначается словом “model”. Чтобы тренировать VGG16, используй команду:
Этой командой мы говорим:
model.fit - нейросеть.тренируйся
(nabor_1, nazvanie_1, - (по набору 1 с названиями картинок 1
batch_size=32 – с этим параметром для обучения
epochs=3 – пробуй распознать каждую картинку 3 раза
validation_data=(nabor_2, nazvanie_2)) – потом пройдись по 2 набору)
В результате этой команды VGG16 будет пытается предсказывать, что изображено на картинках, а потом сравнивать свой ответ с правильным, делать выводы и запоминать результат.
После этого нейросеть готова распознавать любое изображение, которое ты предложишь.
Например, я могу выбрать картинку с рукописной цифрой один, отправить её VGG16 в переменной (my_image) и попросить сказать, что она видит на картинке, так:
Слово prediction переводится как «предсказание». Эта команда говорит:
prediction = - пусть предсказание будет равно тому, что справа от =
= model.predict(my_image)- нейросеть.предскажи,что на(моей картинке)
Если после этой команды написать:
Print(prediction) – напечатай (предсказание)
В ответ программа выведет предсказание нейросети.
Часто нейросеть отвечает правильно, и видит на картинке то же, что и мы, но иногда может ошибаться, так же, как и человек, так что, если VGG16 распознает твою картинку неверно, не переживай, ей еще нужно оправиться от проделок вируса.