Я никогда особо не интересовался миром информационных технологий, да и даже матрицы я вряд ли на листочке смогу перемножить. Да и не нужно мне это было никогда, чтобы вы понимали немного о специфике моей работы, могу поделиться замечательной историей. Попросил я как-то моих коллег сделать работу в Excel – таблице, прошла половина рабочего дня, подхожу к ним, а они сидят и суммируют данные на калькуляторе, да- да, на обычном таком черном калькуляторе с кнопками. Ну и о каких нейронных сетях может идти речь после этого?.. Поэтому никаких особых предпосылок к погружению в мир IT у меня никогда не было. Но, как говорится «хорошо там, где нас нет», мои друзья прожужжали мне все уши о дополненной реальности, о нейронных сетях, о языках программирования (в основном про Python).
На словах оно выглядело весьма просто, и я решил почему бы не освоить это магическое искусство, чтобы применить в своей сфере деятельности.
В этой статье я опущу мои попытки освоить азы Python и поделюсь с вами своим впечатлением от бесплатного курса по TensorFlow от Udacity.
Введение
Для начала стоит отметить, что после 11 лет в энергетике, когда ты знаешь и можешь сделать всё и даже чуточку больше (по своему кругу обязанностей), обучение кардинально новым вещам – с одной стороны вызывает бурный энтузиазм, но с другой – оборачивается физической болью «шестеренок в голове».
Я до сих пор не до конца осознаю все базовые концепции программирования и машинного обучения, поэтому строго судить меня не стоит. Надеюсь моя статья будет интересна и полезна таким же, как я людям — далеким от разработки программного обеспечения.
Прежде чем перейти к обзору курса, скажу, что для его изучения потребуется хотя бы минимальное знание Python. Можно прочитать пару книжек для чайников (я еще начал проходить курс на Stepic, но до конца его пока не освоил).
В самом курсе по TensorFlow не будет сложных конструкций, но понимать для чего импортируются библиотеки, как определяется функция и почему в нее что-то подставляется, будет необходимо.
Почему TensorFlow и Udacity?
Основной целью моего обучения стало желание распознавать фотографии элементов электроустановок с помощью нейронных сетей.
TensorFlow я выбрал, потому что слышал о нем от своих друзей. И как я понял, этот курс достаточно популярный.
Я попытался начать изучение с официального тьюториала .
И тут же столкнулся с двумя проблемами.
- Учебных материалов много, и они идут в разнобой. Составить хотя бы более-менее цельную картину по решению задачи распознавания изображений, мне было очень тяжело.
- Большинство нужных мне статей не переведено на русский. Так уж сложилось, что в детстве я учил немецкий и теперь, как и многие советские дети не знаю ни немецкого, ни английского. Я, конечно, на протяжении сознательной жизни, старался освоить английский, но получилось примерно, как на картинке.
Покопавшись еще на официальном сайте, я нашел рекомендации пройти один из двух on-line курсов.
Как я понял, курс на Courcera был платным, а курс Udacity: Intro to TensorFlow for Deep Learning можно было пройти «безвозмездно, то есть даром».
Содержание курса
Курс состоит из 9 уроков.
Самая первая секция – вводная, там расскажут для чего он в принципе нужен.
Урок № 2 оказался моим любимым. Он был достаточно простым, чтобы его можно было понять, а также демонстрировал чудеса науки. Если кратко, то в данном уроке помимо основных сведений о нейронных сетях, создатели демонстрируют как при помощи однослойной нейронной сети решить задачу перевода температуры из градусов Фаренгейта в градусы Цельсия.
Это действительно очень наглядный пример. До сих пор сижу обдумываю, как придумать и решить аналогичную задачку, но только для электрики.
К сожалению, дальше я застопорился, потому что учить непонятные вещи на незнакомом языке, довольно сложно. Спасло меня то, что я нашел на Хабре перевод этого курса на русский язык.
Перевод выполнен качественно, блокноты Colab тоже переведены, поэтому дальше я подглядывал и в оригинал, и в перевод.
Урок №3 – это, по сути, переложение материалов официального тьюториала TensorFlow. В этом уроке мы с помощью многослойной нейронной сети учимся классифицировать картинки с одеждой (набор данных Fashion MNIST).
Уроки с №4 по №7 также являются переложением тьюториала. Но из-за того, что они грамотно скомпонованы нет необходимости самому разбираться в последовательности изучения. В данных уроках нам вкратце расскажут о сверхточных нейронных сетях, о том, как повысить точность обучения и сохранить модель. При этом мы будем попутно решать задачу классификации кошек и собак на изображении.
Урок №8 представляет собой вообще отдельный курс, там другой преподаватель, и сам курс достаточно объемный. Урок посвящён временным рядам. Поскольку меня это пока не интересует, я просмотрел его по диагонали.
Завершает все урок №9, который является приглашением пройти бесплатный курс по TensorFlow lite.
Что понравилось и не понравилось
Начну с плюсов:
- Курс — бесплатный
- Курс — по TensorFlow 2. Некоторые учебники, что я видел и некоторые курсы в интернете были по TensorFlow 1. Не знаю большая ли разница, но приятно учить актуальную версию.
- Преподаватели на видео не раздражают (хотя в русской версии читают не так бодро, как в оригинале)
- Курс не отнимает много времени
- Курс не вгоняет в чувство тоски и безысходности. Задания в курсе простые и всегда есть подсказка в виде Colab с правильным решением, если что-то не понятно (а не понятна мне была добрая половина задач)
- Не нужно ничего устанавливать, все лабораторные работы курса можно сделать в браузере
Теперь минусы:
- Нет практически никаких контрольных материалов. Ни тестов, ни задач, ничего, чтобы хоть как-то проверить усвоение курса
- У меня не все блокноты работали, как надо. По-моему, в третьем уроке оригинального курса на английском Colab выдавал ошибку, и я не знал, что с ней делать
- Удобно смотреть только на компьютере. Может быть я не до конца разобрался, но я не нашел приложения Udacity на свой смартфон. А мобильная версия сайта неадаптивная, то есть почти всю область экрана занимает меню навигации, но, чтобы увидеть основной контент надо листать вправо за область обзора. Также видео нельзя просмотреть на телефоне. На экране размеров в 6 с небольшим дюймов ничего толком не разглядишь
- Некоторые вещи в курсе разжевываются по несколько раз, но при этом реально нужные вещи по самим свёрточным сетям, в курсе не разжевывают. Я так и не понял глобальную цель части упражнений (например, для чего нужен Max Pooling).
Резюме
Наверняка вы уже догадались, что чуда не произошло. И после прохождения этого короткого курса, невозможно по-настоящему разобраться, как работают нейронные сети.
Конечно, я не смог самостоятельно после этого решить свою задачу с классификацией фотографий рубильников и кнопок в распределительных устройствах.
Но в целом курс полезный. Он показывает, какие вещи можно сделать, с помощью TensorFlow и в каком направлении двигаться дальше.
Думаю, мне для начала надо подучить основы Python и почитать книги на русском языке о том, как работают нейронные сети, а потом уже браться за TensorFlow.
В заключении хочется сказать спасибо моим друзьям за то, что подтолкнули написать первую статью на «Хабр» и помогли её оформить.
P.S. Буду рад Вашим комментариям и любой конструктивной критике.
CrazyElf