Что такое PyTorch и как он работает?
С момента своего создания командой Facebook AI Research (FAIR) в 2017 году PyTorch стал очень популярной и эффективной средой для создания модели глубокого обучения (DL). Эта библиотека машинного обучения с открытым исходным кодом основана на Torch и предназначена для обеспечения большей гибкости и повышенной скорости реализации глубоких нейронных сетей. В настоящее время PyTorch является наиболее популярной библиотекой среди исследователей и практиков искусственного интеллекта во всем мире в промышленности и научных кругах.
В этой статье мы расскажем, что такое PyTorch, для чего используется Pytorch, почему он так выгоден, распространенные модули PyTorch, оптимизатор PyTorch и ResNet PyTorch. Затем мы рассмотрим, как решить проблему классификации изображений с помощью PyTorch.
Давайте начнем.
Что такое PyTorch и как он работает?
PyTorch — это оптимизированная тензорная библиотека глубокого обучения, основанная на Python и Torch, которая в основном используется для приложений, использующих графические и центральные процессоры. PyTorch предпочтительнее других фреймворков глубокого обучения, таких как TensorFlow и Keras, поскольку он использует динамические графы вычислений и полностью Pythonic. Он позволяет ученым, разработчикам и отладчикам нейронных сетей запускать и тестировать части кода в режиме реального времени. Таким образом, пользователям не нужно ждать реализации всего кода, чтобы проверить, работает ли часть кода или нет.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Двумя основными особенностями PyTorch являются:
- Тензорные вычисления (аналогично NumPy) с мощной поддержкой ускорения графического процессора.
- Автоматическая дифференциация для создания и обучения глубоких нейронных сетей
Основы PyTorch
Основные операции PyTorch очень похожи на Numpy. Давайте сначала разберемся с основами.
В машинном обучении, когда мы представляем данные, нам нужно делать это в числовом виде. Тензор — это просто контейнер, который может хранить данные в нескольких измерениях. Однако с математической точки зрения тензор — это фундаментальная единица данных, которую можно использовать в качестве основы для сложных математических операций. Это может быть число, вектор, матрица или многомерный массив, например массивы Numpy. Тензоры также могут обрабатываться процессором или графическим процессором, чтобы ускорить операции. Существуют различные типы тензоров, такие как Float Tensor, Double Tensor, Half Tensor, Int Tensor и Long Tensor, но PyTorch использует 32-битный Float Tensor в качестве типа по умолчанию.
Коды для выполнения математических операций в PyTorch такие же, как и в Numpy. Пользователям необходимо инициализировать два тензора, а затем выполнять над ними такие операции, как сложение, вычитание, умножение и деление.
Инициализация матрицы и матричные операции
Чтобы инициализировать матрицу случайными числами в PyTorch, используйте функцию randn(), которая дает тензор, заполненный случайными числами из стандартного нормального распределения. Установка случайного начального числа в начале будет генерировать одни и те же числа каждый раз, когда вы запускаете этот код. Основные матричные операции и операции транспонирования в PyTorch также аналогичны NumPy.
Распространенные модули PyTorch
В PyTorch модули используются для представления нейронных сетей.
Модуль autograd — это механизм автоматического дифференцирования PyTorch, который помогает быстро вычислять градиенты при прямом проходе. Autograd генерирует ориентированный ациклический граф, листья которого являются входными тензорами, а корни — выходными тензорами.
Модуль Optim — это пакет с заранее написанными алгоритмами для оптимизаторов, которые можно использовать для построения нейронных сетей.
Модуль nn включает в себя различные классы, помогающие строить модели нейронных сетей. Все модули PyTorch являются подклассом модуля nn.
График динамических вычислений
Вычислительные графики в PyTorch позволяют платформе рассчитывать значения градиента для построенных нейронных сетей. PyTorch использует динамические вычислительные графы. Граф определяется косвенно с использованием перегрузки операторов во время выполнения прямых вычислений. Динамические графики более гибки, чем статические, и пользователи могут чередовать построение и оценку графика. Они удобны для отладки, поскольку позволяют выполнять построчное выполнение кода. Находить проблемы в коде намного проще с помощью динамических графиков PyTorch — важной функции, которая делает PyTorch таким предпочтительным выбором в отрасли.
Вычислительные графики в PyTorch перестраиваются с нуля на каждой итерации, что позволяет использовать произвольные операторы потока управления Python, которые могут влиять на общую форму и размер графа каждый раз, когда происходит итерация. Преимущество в том, что перед запуском обучения нет необходимости кодировать все возможные пути. Вы управляете тем, что отличаете.
Загрузчик данных
Работа с большими наборами данных требует загрузки всех данных в память за один раз. Это приводит к перебоям в работе памяти, и программы работают медленно. Кроме того, сложно поддерживать код обработки выборок данных. PyTorch предлагает два примитива данных — DataLoader и Dataset — для распараллеливания загрузки данных с автоматическим пакетированием, а также лучшей читаемости и модульности кодов. Наборы данных и DataLoader позволяют пользователям использовать свои собственные данные, а также предварительно загруженные наборы данных. В то время как Dataset содержит образцы и соответствующие метки, DataLoader объединяет набор данных и сэмплер и реализует итерацию вокруг набора данных, чтобы пользователи могли легко получить доступ к образцам.
Решение проблемы классификации изображений с использованием PyTorch
Вы когда-нибудь создавали нейронную сеть с нуля в PyTorch? Если нет, то это руководство для вас.
- Шаг 1. Инициализируйте ввод и вывод с помощью тензора.
- Шаг 2. Определите сигмовидную функцию, которая будет действовать как функция активации. Используйте производную сигмовидной функции для шага обратного распространения ошибки.
- Шаг 3. Инициализируйте такие параметры, как количество эпох, веса, смещения, скорость обучения и т. д., используя функцию randn(). На этом создание простой нейронной сети, состоящей из одного скрытого слоя, входного и выходного слоев, завершено.
Шаг прямого распространения используется для расчета выходных данных, а шаг обратного распространения используется для расчета ошибок. Ошибка используется для обновления весов и смещений.
Далее у нас есть окончательная модель нейронной сети, основанная на реальном примере, где платформа PyTorch помогает создать модель глубокого обучения.
Поставленная задача — это задача классификации изображений, в которой мы узнаем тип одежды, просматривая различные изображения одежды.
- Шаг 1 – Классифицируйте изображение одежды по разным классам.
В наборе данных есть две папки: одна для обучающего набора, другая для тестового набора. Каждая папка содержит файл .csv, содержащий идентификатор любого изображения и соответствующее имя метки. Другая папка содержит изображения конкретного набора.
Импортируйте необходимые библиотеки, а затем прочитайте файл .csv. Постройте случайно выбранное изображение, чтобы лучше понять, как выглядят данные. Загрузите все обучающие изображения с помощью файла train.csv.
- Шаг 3 – Обучение модели
Создайте набор проверки, чтобы проверить производительность модели на невидимых данных. Определите модель, используя пакет импорта горелки и необходимые модули. Определите такие параметры, как количество нейронов, эпох и скорость обучения. Постройте модель, а затем обучите ее определенному количеству эпох. Сохраняйте потери обучения и проверки для каждой эпохи — график, потери обучения и проверки, чтобы проверить, синхронизированы ли они.
- Шаг 4 – Получение прогнозов
Наконец, загрузите тестовые изображения, сделайте прогнозы и отправьте их. После отправки прогнозов используйте процент точности в качестве ориентира, чтобы попытаться улучшить его, изменяя различные параметры модели.
Будьте впереди технологической игры с нашей программой профессиональной сертификации в области искусственного интеллекта и машинного обучения, проводимой в партнерстве с Purdue и в сотрудничестве с IBM. Узнайте больше!
Будьте в курсе событий в области глубокого обучения
Подводя итог, можно сказать, что PyTorch — это необходимая среда глубокого обучения и отличный выбор в качестве первой среды глубокого обучения для изучения. Если вы интересуетесь компьютерным зрением и глубоким обучением, ознакомьтесь с нашими руководствами по приложениям глубокого обучения и нейронным сетям.
Повысьте свои навыки глубокого обучения с помощью нашей программы профессиональных сертификатов в области искусственного интеллекта и машинного обучения от Simplilearn, одного из ведущих поставщиков онлайн-сертификационного обучения в мире.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)