как установить torch на windows

Как установить и использовать PyTorch

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windows

PyTorch – это фреймворк, разработанный Facebook AI Research для глубокого обучения, соединяющий в себе и удобные для новичков инструменты отладки, и конфигурации высокого уровня для продвинутых пользователей. PyTorch используют в таких компаниях, как Facebook и Tesla. Приложение включает компьютерное зрение, обработку естественного языка, криптографию и многое другое. В этом руководстве основное внимание будет уделено установке PyTorch.

Мы установим версию PyTorch «CPU support only» в три шага. Такая установка идеально подходит для людей, которые хотят использовать PyTorch, но не имеют видеокарты Nvidia. Кроме того, мы установим PyTorch в виртуальной среде Python с помощью virtualenv. Такой подход изолирует установку PyTorch, а также позволит нам в дальнейшем устанавливать разные версии PyTorch для каждого проекта. После завершения установки мы протестируем свой экземпляр PyTorch, запустив небольшую программу, а затем воспользуемся PyTorch для классификации изображений.

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

Требования

Для выполнения этого мануала вам потребуется локальная среда разработки Python 3 и как минимум 1 ГБ ОЗУ. Чтобы настроить Python и все необходимое для вашей среды разработки, вы можете следовать этим инструкциям:

1: Установка PyTorch

Для начала давайте создадим рабочее пространство для этого проекта и установим необходимые зависимости. Наше рабочее пространство будет называться pytorch:

Создайте каталог для хранения ваших ресурсов:

Перейдите в каталог pytorch:

Затем создайте новую виртуальную среду для вашего проекта:

Затем установите PyTorch. В macOS установить его можно с помощью следующей команды:

В Linux и Windows для CPU-only сборки используйте следующие команды:

Обратите внимание: мы по умолчанию включили torchvision. Это подбиблиотека, которая содержит несколько утилит, специально предназначенных для компьютерного зрения, – их вы будете использовать позже в этом руководстве. На экране появится вывод, подтверждающий установку PyTorch:

Примечание: Если вы хотите деактивировать виртуальную среду, используйте команду:

Чтобы позже активировать среду снова, перейдите в каталог проекта и запустите команду:

Итак, вы установили PyTorch. Давайте теперь убедимся, что ваш экземпляр PyTorch работает.

2: Проверка установки

Чтобы проверить установку PyTorch, мы запустим в нем небольшую программу как пользователь без полномочий root. Мы не будем создавать файл Python, мы создадим эту программу с помощью интерактивной консоли Python.

Чтобы написать программу, запустите интерпретатор Python с помощью следующей команды:

В терминале вы увидите:

Это командная строка интерпретатора Python, и она указывает, что Python готов работе.

Сначала введите эту строку, чтобы импортировать пакет PyTorch. После ввода нажмите Enter.

Определите вектор нулей. Представьте себе вектор как набор чисел (или как список чисел). Если точнее: вектор – это «стрелка» в пространстве, определяющая как направление (куда она указывает?), так и величину (какова ее длина?). Затем мы создадим вектор, используя список из трех чисел с помощью Tensor(). Это трехмерный вектор, представляющий собой стрелку в трехмерном пространстве.

Запустите следующий оператор Python:

Вы получите такой вывод:

Это значит, что установка PyTorch прошла успешно. Выйдите из интерактивной консоли Python, нажав CTRL+D. Далее мы создадим классификатор изображений с помощью PyTorch.

3: Классификация изображений с помощью PyTorch

Классификатор изображений принимает изображения в качестве входных данных и выводит предсказанный класс (например, Cat или Dog). Классификаторы изображений в средах глубокого обучения по своей сути эквивалентны традиционным программам «Hello World». Есть несколько веских причин начать с классификации изображений. Во-первых, многие классификаторы могут строить прогнозы на обычных процессорах, не требуя значительных ресурсов. Во-вторых, на основе предсказанного класса можно очень легко понять, работает ли ваш классификатор. В меньшей степени это относится к другим нейронным сетям, которые, например, генерируют текст.

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

Сначала загрузите файл JSON, чтобы преобразовать вывод нейронной сети в удобочитаемое имя класса:

Загрузите следующий скрипт Python, который загрузит изображение и нейронную сеть, с помощью которой потом классифицирует изображение:

Загрузите следующее изображение собаки, чтобы запустить классификатор. Используйте эту команду:

Теперь запустите предварительно обученный классификатор изображений (он не требует обучения и сможет точно и сразу предсказывать классы):

python step_2_pretrained.py assets/dog.jpg

Вы получите следующий результат, показывающий, что классификатор работает правильно:

Prediction: Pembroke, Pembroke Welsh corgi

Эта строка находится в конце вывода запущенной нами предварительно обученной модели. Если вы хотите использовать другое изображение, вы можете изменить первый аргумент команды python3 step_2_pretrained.py. В качестве аргумента нужно передать относительный путь к другому файлу изображения.

На следующем этапе мы рассмотрим несколько рекомендуемых инструментов для PyTorch.

Экосистема PyTorch

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

Для каждой библиотеки глубокого обучения существует каноническая структура более высокого уровня. Первые несколько лет своего существования PyTorch был исключением из этого правила. Однако в 2019 году Facebook AI Research выпустила две платформы, которые быстро стали популярными. Обратите внимание, по состоянию на февраль 2021 года ни одна из этих библиотек не является зрелой (поэтому для начала гораздо полезнее изучить родные руководства PyTorch).

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

Если вам нужно развернуть модель PyTorch в среде производства, для этого есть несколько распространенных вариантов:

Существует несколько GitHub репозиториев PyTorch, ориентированных на приложения, которые можно использовать для воспроизведения и получения новейших результатов в соответствующих областях исследований:

В экосистеме PyTorch можно найти множество других библиотек.

Заключение

В этом мануале вы установили PyTorch в виртуальной среде Python и убедились, что ваш экземпляр PyTorch работает. Теперь у вас есть инструменты для дальнейшей работы в области машинного обучения.

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

Источник

Шпаргалка по установке CUDA, cuDNN, Tensorflow и PyTorch на Windows 10

В очередной раз после переустановки Windows осознал, что надо накатить драйвера, CUDA, cuDNN, Tensorflow/Keras для обучения нейронных сетей.

Каждый раз для меня это оказывается несложной, но времязатратной операцией: найти подходящую комбинацию Tensorflow/Keras, CUDA, cuDNN и Python несложно, но вспоминаю про эти зависимости только в тот момент, когда при импорте Tensorflow вижу, что видеокарта не обнаружена и начинаю поиск нужной страницы в документации Tensorflow.

В этот раз ситуация немного усложнилась. Помимо установки Tensorflow мне потребовалось установить PyTorch. Со своими зависимостями и поддерживаемыми версиями Python, CUDA и cuDNN.

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

Краткий алгоритм установки Tensorflow и PyTorch

Примечание: Установить Tensorflow и PyTorch можно в одном виртуальном окружении, но в статье этого алгоритма нет.

Подготовка к установке

Установка CUDA и cuDNN

Устанавливаем Tensorflow

Устанавливаем PyTorch

В моём случае заработала комбинация:

Tensorflow и PyTorch установлены в разных виртуальных окружениях.

Итого

Польза этой статьи будет понятна не скоро: систему переустанавливаю я не часто.

Если воспользуетесь этим алгоритмом и найдёте какие-то ошибки – пишите в комментарии

Источник

Get Started

Select preferences and run the command to install PyTorch locally, or get started quickly with one of the supported cloud platforms.

Start Locally

Select your preferences and run the install command. Stable represents the most currently tested and supported version of PyTorch. This should be suitable for many users. Preview is available if you want the latest, not fully tested and supported, 1.11 builds that are generated nightly. Please ensure that you have met the prerequisites below (e.g., numpy), depending on your package manager. Anaconda is our recommended package manager since it installs all dependencies. You can also install previous versions of PyTorch. Note that LibTorch is only available for C++.

Additional support or warranty for some PyTorch Stable and LTS binaries are available through the PyTorch Enterprise Support Program.

Installing on macOS

PyTorch can be installed and used on macOS. Depending on your system and compute requirements, your experience with PyTorch on a Mac may vary in terms of processing time. It is recommended, but not required, that your Mac have an NVIDIA GPU in order to harness the full power of PyTorch’s CUDA support.

Currently, CUDA support on macOS is only available by building PyTorch from source

Prerequisites

macOS Version

PyTorch is supported on macOS 10.10 (Yosemite) or above.

Python

It is recommended that you use Python 3.5 or greater, which can be installed either through the Anaconda package manager (see below), Homebrew, or the Python website.

Package Manager

To install the PyTorch binaries, you will need to use one of two supported package managers: Anaconda or pip. Anaconda is the recommended package manager as it will provide you all of the PyTorch dependencies in one, sandboxed install, including Python.

Anaconda

Installation

Anaconda

To install PyTorch via Anaconda, use the following conda command:

To install PyTorch via pip, use one of the following two commands, depending on your Python version:

Verification

To ensure that PyTorch was installed correctly, we can verify the installation by running sample PyTorch code. Here we will construct a randomly initialized tensor.

The output should be something similar to:

Building from source

For the majority of PyTorch users, installing from a pre-built binary via a package manager will provide the best experience. However, there are times when you may want to install the bleeding edge PyTorch code, whether for testing or actual development on the PyTorch core. To install the latest PyTorch code, you will need to build PyTorch from source.

You will also need to build from source if you want CUDA support.

Prerequisites

You can verify the installation as described above.

Installing on Linux

PyTorch can be installed and used on various Linux distributions. Depending on your system and compute requirements, your experience with PyTorch on Linux may vary in terms of processing time. It is recommended, but not required, that your Linux system has an NVIDIA GPU in order to harness the full power of PyTorch’s CUDA support..

Prerequisites

Supported Linux Distributions

PyTorch is supported on Linux distributions that use glibc >= v2.17, which include the following:

Python

Python 3.6 or greater is generally installed by default on any of our supported Linux distributions, which meets our recommendation.

However, if you want to install another version, there are multiple ways:

If you decide to use APT, you can run the following command to install it:

If you use Anaconda to install PyTorch, it will install a sandboxed version of Python that will be used for running PyTorch applications.

Package Manager

To install the PyTorch binaries, you will need to use one of two supported package managers: Anaconda or pip. Anaconda is the recommended package manager as it will provide you all of the PyTorch dependencies in one, sandboxed install, including Python.

Anaconda

You may have to open a new terminal or re-source your

/.bashrc to get access to the conda command.

While Python 3.x is installed by default on Linux, pip is not installed by default.

Installation

Anaconda

No CUDA

To install PyTorch via Anaconda, and do not have a CUDA-capable system or do not require CUDA, in the above selector, choose OS: Linux, Package: Conda and CUDA: None. Then, run the command that is presented to you.

With CUDA

To install PyTorch via Anaconda, and you do have a CUDA-capable system, in the above selector, choose OS: Linux, Package: Conda and the CUDA version suited to your machine. Often, the latest CUDA version is better. Then, run the command that is presented to you.

No CUDA

To install PyTorch via pip, and do not have a CUDA-capable system or do not require CUDA, in the above selector, choose OS: Linux, Package: Pip and CUDA: None. Then, run the command that is presented to you.

With CUDA

To install PyTorch via pip, and do have a CUDA-capable system, in the above selector, choose OS: Linux, Package: Pip and the CUDA version suited to your machine. Often, the latest CUDA version is better. Then, run the command that is presented to you.

Verification

To ensure that PyTorch was installed correctly, we can verify the installation by running sample PyTorch code. Here we will construct a randomly initialized tensor.

The output should be something similar to:

Additionally, to check if your GPU driver and CUDA is enabled and accessible by PyTorch, run the following commands to return whether or not the CUDA driver is enabled:

Building from source

For the majority of PyTorch users, installing from a pre-built binary via a package manager will provide the best experience. However, there are times when you may want to install the bleeding edge PyTorch code, whether for testing or actual development on the PyTorch core. To install the latest PyTorch code, you will need to build PyTorch from source.

Prerequisites

You can verify the installation as described above.

Installing on Windows

PyTorch can be installed and used on various Windows distributions. Depending on your system and compute requirements, your experience with PyTorch on Windows may vary in terms of processing time. It is recommended, but not required, that your Windows system has an NVIDIA GPU in order to harness the full power of PyTorch’s CUDA support.

Prerequisites

Supported Windows Distributions

PyTorch is supported on the following Windows distributions:

The install instructions here will generally apply to all supported Windows distributions. The specific examples shown will be run on a Windows 10 Enterprise machine

Python

Currently, PyTorch on Windows only supports Python 3.x; Python 2.x is not supported.

As it is not installed by default on Windows, there are multiple ways to install Python:

If you use Anaconda to install PyTorch, it will install a sandboxed version of Python that will be used for running PyTorch applications.

If you decide to use Chocolatey, and haven’t installed Chocolatey yet, ensure that you are running your command prompt as an administrator.

For a Chocolatey-based install, run the following command in an administrative command prompt:

Package Manager

To install the PyTorch binaries, you will need to use at least one of two supported package managers: Anaconda and pip. Anaconda is the recommended package manager as it will provide you all of the PyTorch dependencies in one, sandboxed install, including Python and pip.

Anaconda

If you installed Python by any of the recommended ways above, pip will have already been installed for you.

Installation

Anaconda

No CUDA

To install PyTorch via Anaconda, and do not have a CUDA-capable system or do not require CUDA, in the above selector, choose OS: Windows, Package: Conda and CUDA: None. Then, run the command that is presented to you.

With CUDA

To install PyTorch via Anaconda, and you do have a CUDA-capable system, in the above selector, choose OS: Windows, Package: Conda and the CUDA version suited to your machine. Often, the latest CUDA version is better. Then, run the command that is presented to you.

No CUDA

To install PyTorch via pip, and do not have a CUDA-capable system or do not require CUDA, in the above selector, choose OS: Windows, Package: Pip and CUDA: None. Then, run the command that is presented to you.

With CUDA

To install PyTorch via pip, and do have a CUDA-capable system, in the above selector, choose OS: Windows, Package: Pip and the CUDA version suited to your machine. Often, the latest CUDA version is better. Then, run the command that is presented to you.

Verification

To ensure that PyTorch was installed correctly, we can verify the installation by running sample PyTorch code. Here we will construct a randomly initialized tensor.

From the command line, type:

then enter the following code:

The output should be something similar to:

Additionally, to check if your GPU driver and CUDA is enabled and accessible by PyTorch, run the following commands to return whether or not the CUDA driver is enabled:

Building from source

For the majority of PyTorch users, installing from a pre-built binary via a package manager will provide the best experience. However, there are times when you may want to install the bleeding edge PyTorch code, whether for testing or actual development on the PyTorch core. To install the latest PyTorch code, you will need to build PyTorch from source.

Prerequisites

You can verify the installation as described above.

Источник

Установка Pytorch на Windows, Linux и MacOS

Установка Pytorch довольно проста и может быть сделана на всех основных операционных системах. Однако, если вы хотите, чтобы ваши руки были грязны без

Установка Pytorch довольно проста и может быть сделана на всех основных операционных системах. Однако, если вы хотите, чтобы ваши руки были грязными, не устанавливая его, Google Colab обеспечивает хорошую отправной точку.

Colab поставляется с предустановленными модулями Pytorch и Tensorflow и работает с поддержкой GPU и TPU.

Для установки на вашем собственном компьютере Pytorch поставляется как с CUDA, так и без вариантов CUDA, в зависимости от оборудования, доступных вам.

Это будет единой шаговой установкой – Pytorch начать локально Отказ

Пререквизит: Распределение анаконды (ссылка на официальный сайт) – Вам нужна AnaConda, установленная в вашей системе, чтобы следовать в этом руководстве. Пакеты загрузки доступны для всех основных операционных систем, и процесс установки очень прямой.

Итак, прежде чем идти вперед с учебником, убедитесь, что у вас есть up и запущенная дистрибуция AnaConda, настроенная на вашей операционной системе.

Примечание В случае, если вы не хотите использовать AnaConda, вы всегда можете использовать PIP для установки Pytorch. Поскольку PIP поставляется в комплекте с установщиком Python, у вас уже будет в вашей системе.

Установите Pytorch на Windows

Веб-сайт Pytorch предоставляет следующую команду для системы Windows. Pytorch работает с Windows 7 или выше и использует Python 3 или выше. Установка его с помощью ANACONDA довольно проста и может быть сделано за несколько минут.

Следующим шагом является вставка следующей команды в приглашении ANACONDA и запустите ее.

Подскажите все зависимости, которые будут установлены вместе с Pytorch. Если вы в порядке, чтобы продолжить, введите Да в командной строке.

Анаконда теперь продолжается с установкой. Вы можете проверить установку через интерпретатор Python или ноутбук Jupyter позже.

Теперь вы успешно установили Pytorch в вашей системе Windows.

Установка Pytorch на Linux

Если вы открываете ту же страницу установки с машины Linux, вы заметите, что сгенерированная команда будет другой.

Следующий шаг – скопировать и вставить команду в свой терминал и запустить ее.

Терминал просит вас получить разрешение на установку/обновление пакетов. Вам нужно нажать Да как ответ.

Установка теперь будет продолжать устанавливать факел и Torchvision пакеты в вашу среду.

Установка Pytorch на Mac OS

Мы будем использовать PIP, чтобы установить Pytorch в Mac OS. Все, что нам нужно, это выбрать соответствующие параметры на домашней странице Pytorch, чтобы получить команду установки.

Итак, мы должны запустить следующую команду для установки библиотек PyTorch и Torchvision на Mac OS.

Вот выход из терминала, когда вышеуказанная команда выполняется.

Последняя строка вывода четко утверждает, что пакеты для факела, так и для торжества успешно установлены.

Давайте запустим интерпретатор Python 3.7 и распечатайте версию горелки, чтобы подтвердить успешную установку.

Заключение

Pytorch – очень мощная система обучения машины. Он много используется в создании глубокого обучения путем обработки большого количества данных. Мы рассмотрим больше особенностей Pytorch в предстоящих руководствах.

Источник

Туториал по PyTorch: от установки до готовой нейронной сети

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windows

Если вы уже пробовали создавать собственные глубокие нейронные сети с помощью TensorFlow и Keras, то, вероятно, знакомы с чувством разочарования при отлаживании этих библиотек. Хотя они имеют API на Python, всё еще трудно выяснить, что именно пошло не так при ошибке. Они также плохо работают вместе с библиотеками numpy, scipy, scikit-learn, Cython и другими. Библиотека глубокого обучения PyTorch имеет заявленное преимущество — хорошо работает с Python и создана для апологетов Python. Кроме того, приятное свойство PyTorch — построение вычислительного динамического графа, противоположно статическим вычислительным графам, представленным в TensorFlow и Keras. PyTorch сейчас находится на подъеме и используется в разработке Facebook, Twitter, NVIDIA и другими компаниями. Давайте обратимся к туториалу по использованию PyTorch.

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windows

Перед вами перевод статьи «A PyTorch tutorial – deep learning in Python», ссылка на оригинал — в подвале статьи.

Первый вопрос для рассмотрения — действительно ли PyTorch лучше TensorFlow? Это субъективно, так как с точки зрения производительности нет больших различий. В любом случае, PyTorch стал серьезным соперником в соревновании между библиотеками глубокого обучения. Давайте начнем изучать библиотеку, оставив для размышлений вопрос о том, что же лучше.

Основы PyTorch

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

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windowsПолносвязная нейронная сеть

Установка на Windows

Стоит сказать, если вы пользователь Windows, на веб-сайте PyTorch нет опции для простой установки библиотеки для этой операционной системы. Однако задача легко решается с помощью этого веб-сайта, где находятся дальнейшие инструкции. Установка стоит затраченных усилий.

Вычислительные графы

Первое, что необходимо понять о любой библиотеке глубокого обучения — идея вычислительных графов. Вычислительный граф — набор вычислений, которые называются узлами (nodes), и которые соединены в прямом порядке вычислений. Другими словами, выбранный узел зависит от узлов на входе, который в свою очередь производит вычисления для других узлов. Ниже представлен простой пример вычислительного графа для вычисления выражения a = (b + c) * (c + 2). Можно разбить вычисление на следующие шаги:

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windowsПростой вычислительный граф

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

Тензоры

Тензоры — подобные матрице структуры данных, которые являются неотъемлемыми компонентами в библиотеках глубокого обучения и используются для эффективных вычислений. Графические процессоры (GPU) эффективны при вычислении операций между тензорами, что стимулировало волну возможностей в глубоком обучении. В PyTorch тензоры могут определяться несколькими способами:

Этот код создает тензор размера (2,3), заполненный нулями. В данном примере первое число — количество рядов, второе — количество столбцов:

Мы также можем создать тензор, заполненный случайными float-значениями:

Умножение тензоров, сложение друг с другом и другие алгебраические операции просты:

Также доступна работа с функцией slice в numpy. Например y[:,1]:

Теперь вы знаете, как создавать тензоры и работать с ними в PyTorch. Следующим шагом туториала будет обзор более сложных конструкций в библиотеке.

Автоматическое дифференцирование в PyTorch

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

Создадим переменную из простого тензора:

В объявлении переменной используется двойной тензор размера 2х2 и дополнительно указывается, что переменной необходим градиент. При использовании этой переменной в нейронных сетях, она становится способна к обучению. Если последний параметр будет равен False, то переменная не может использоваться для обучения. В этом простом примере мы ничего не будем тренировать, но хотим запросить градиент для этой переменной, как будет показано ниже.

Далее, создадим новую переменную на основе x.

Чтобы вычислить градиент этой операции по x, dz/dx, можно аналитически получить 4x + 5. Если все элементы x — двойки, то градиент dz/dx — тензор размерности (2,2), заполненный числами 13. Однако сначала необходимо запустить операцию обратного распространения .backwards(), чтобы вычислить градиент относительно чего-либо. В нашем случае инициализируется единичный тензор (2,2), относительно которого считаем градиент. В таком случае вычисление — просто операция d/dx:

Результатом является следующее:

Заметим, это в точности то, что мы предсказывали вначале. Отметим, градиент хранится в переменной x в свойстве .grad.

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

Создание нейронной сети в PyTorch

Этот раздел — основной в туториале. Полный код туториала лежит в этом репозитории на GitHub. Здесь мы создадим простую нейронную сеть с 4 слоями, включая входной и два скрытых слоя, для классификации рукописных символов в датасете MNIST. Архитектура, которую мы будем использовать, показана на картинке:

как установить torch на windows. Смотреть фото как установить torch на windows. Смотреть картинку как установить torch на windows. Картинка про как установить torch на windows. Фото как установить torch на windowsАрхитектура полносвязной нейронной сети

Входной слой состоит из 28 х 28 = 784 пикселей с оттенками серого, которые составляют входные данные в датасете MNIST. Входные данные далее проходят через два скрытых слоя, каждый из которых содержит 200 узлов, использующих линейную выпрямительную функцию активации (ReLU). Наконец, мы имеем выходной слой с десятью узлами, соответствующими десяти рукописным цифрам от 0 до 9. Для такой задачи классификации будем использовать выходной softmax-слой.

Класс для построения нейронной сети

Чтобы создать нейронную сеть в PyTorch, используется класс nn.Module. Чтобы им воспользоваться, необходимо наследование, что позволит использовать весь функционал базового класса nn.Module, но при этом еще имеется возможность переписать базовый класс для конструирования модели или прямого прохождения через сеть. Представленный ниже код поможет объяснить сказанное:

В таком определении можно видеть наследование базового класса nn.Module. В первой строке инициализации класса def __init__(self) мы имеем требуемую super() функцию языка Python, которая создает объект базового класса. В следующих трех строках создаем полностью соединенные слои как показано на диаграмме архитектуры. Полностью соединенный слой нейронной сети представлен объектом nn.Linear, в котором первый аргумент — определение количества узлов в i-том слое, а второй — количество узлов в i+1 слое. Из кода видно, первый слой принимает на входе 28×28 пикселей и соединяется с первым скрытым слоем с 200 узлами. Далее идет соединение с другим скрытым слоем с 200 узлами. И, наконец, соединение последнего скрытого слоя с выходным слоем с 10 узлами.

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

Для метода forward() берем входные данные x в качестве основного аргумента. Далее, загружаем всё в в первый полностью соединенный слой self.fc1(x) и применяем активационную функцию ReLU для узлов в этом слое, используя F.relu(). Из-за иерархической природы этой нейронной сети, заменяем x на каждой стадии и отправляем на следующий слой. Делаем эту процедуру на трех соединенных слоях, за исключением последнего. На последнем слое возвращаем не ReLU, а логарифмическую softmax активационную функцию. Это, в комбинации с функцией потери отрицательного логарифмического правдоподобия, дает многоклассовую на основе кросс-энтропии функцию потерь, которую мы будет использовать для тренировки сети.

Мы определили нейронную сеть. Следующим шагом будет создание экземпляра (instance) этой архитектуры:

При выводе экземпляра класса Net получаем следующее:

Что очень удобно, так как подтверждает структуру нашей нейронной сети.

Тренировка сети

Далее необходимо задать метод оптимизации и критерий качества:

В первой строке создаем оптимизатор на основе стохастического градиентного спуска, устанавливая скорость обучения (learning rate; в нашем случае определим этот показатель на уровне 0.01) и momentum. Еще в оптимизаторе необходимо определить все остальные параметры сети, но это делается легко в PyTorch благодаря методу .parameters() в базовом классе nn.Module, который наследуется из него в новый класс Net.

Далее устанавливается метрика контроля качества — функция потерь отрицательного логарифмического правдоподобия. Такой вид функции в комбинации с логарифмической softmax-функцией на выходе нейронной сети дает эквивалентную кросс-энтропийную потерю для 10 классов задачи классификации.

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

Внешний тренировочный цикл проходит по количеству эпох, а внутренний тренировочный цикл проходит через все тренировочные данные в партиях, размер которых задается в коде как batch_size. На следующей линии конвертируем данные и целевую переменную в переменные PyTorch. Входной датасет MNIST, который находится в пакете torchvision (который вам необходимо установить при помощи pip), имеет размер (batch_size, 1, 28, 28) при извлечении из загрузчика данных. Такой четырехмерный тензор больше подходит для архитектуры сверточной нейронной сети, чем для нашей полностью соединенной сети. Тем не менее, необходимо уменьшить размерность данных с (1,28,28) до одномерного случая для 28 х 28 = 784 входных узла.

Функция .view() работает с переменными PyTorch и преобразует их форму. Если мы точно не знаем размерность данного измерения, можно использовать ‘-1’ нотацию в определении размера. Поэтому при использование data.view(-1,28*28) можно сказать, что второе измерение должно быть равно 28 x 28, а первое измерение должно быть вычислено из размера переменной оригинальных данных. На практике это означает, что данные теперь будут размера (batch_size, 784). Мы можем пропустить эту партию входных данных в нашу нейросеть, и магический PyTorch сделает за нас тяжелую работу, эффективно выполняя необходимые вычисления с тензорами.

В следующей строке запускаем optimizer.zero_grad(), который обнуляет или перезапускает градиенты в модели так, что они готовы для дальнейшего обратного распространения. В других библиотеках это реализовано неявно, но нужно помнить, что в PyTorch это делается явно. Давайте рассмотрим следующий код:

Первая строка, в которой подаем порцию данных на вход нашей модели, вызывает метод forward() в классе Net. После запуска строки переменная net_out будет иметь логарифмический softmax-выход из нашей нейронной сети для заданной партии данных. Это одна из самых замечательных особенностей PyTorch, так как можно активировать любой стандартный отладчик Python, который вы обычно используете, и мгновенно узнать, что происходит в нейронной сети. Это противоположно другим библиотекам глубокого обучения, TensorFlow и Keras, в которых требуется производить сложные отладочные действия, чтобы узнать, что ваша нейронная сеть действительно создает. Надеюсь, вы поиграете с кодом для этого туториала и поймете, насколько в PyTorch удобный отладчик.

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

Давайте посмотрим на следующие две строки:

Первая строка запускает операцию обратного распространения ошибки из переменной потери в обратном направлении через нейросеть. Если сравнить это с упомянутой выше операцией .backward(), которую мы рассматривали в туториале, видно, что не используется никакой аргумент в операции .backward(). Скалярные переменные при использовании на них .backward() не требуют аргумента; только тензорам необходим согласованный аргумент для передачи в операцию .backward().

В следующей строке мы просим PyTorch выполнить градиентный спуск по шагам на основе вычисленных во время операции .backward() градиентов.

Наконец, будем выводить результаты каждый раз, когда модель достигает определенного числа итераций:

Эта функция выводит наш прогресс на протяжении эпох тренировки и показывает ошибку нейросети в этот момент. Отметим, что доступ к потерям находится в свойстве .data у переменной PyTorch, которая в данном случае будет массивом с единственным значением. Получаем скалярную потерю используя loss.data[0].

Запуская этот тренировочный цикл, получаем на выходе следующее:

После 10 эпох, значение потери по величине должно получиться меньше 0.05.

Тестирование сети

Чтобы проверить нашу обученную нейронную сеть на тестовом датасете MNIST, запустим следующий код:

Этот цикл совпадает с тренировочным циклом до строки test_loss. Здесь мы извлекаем потери сети используя свойство .data[0] как и раньше, но только все в одной строке. Далее в строке pred используется метод data.max(1), который возвращает индекс наибольшего значения в определенном измерении тензора. Теперь выход нашей нейронной сети будет иметь размер (batch_size, 10), где каждое значение из второго измерения длины 10 — логарифмическая вероятность, которую нейросеть приписывает каждому выходному классу (то есть это логарифмическая вероятность принадлежности картинки к символу от 0 до 9). Поэтому для каждого входного образца в партии net_out.data будет выглядеть следующим образом:

Значение с наибольшей логарифмической вероятностью — цифра от 0 до 9, которую нейронная сеть распознает на входной картинке. Иначе говоря, это лучшее предсказание для заданного входного объекта. В примере net_out.data таким лучшим предсказанием является значение -5.9817e-04, которое соответствует цифре “7”. Поэтому для этого примера нейросеть предскажет знак “7”. Функция .max(1) определяет это максимальное значение во втором пространстве (если мы хотим найти максимум в первом пространстве, мы должны аргумент функции изменить с 1 на 0) и возвращает сразу и максимальное найденное значение, и индекс ему соответствующий. Поэтому эта конструкция имеет размер (batch_size, 2). В данном случае, нас интересует индекс максимального найденного значения, к которому мы получаем доступ с помощью вызова .max(1)[1].

Теперь у нас есть предсказание нейронной сети для каждого примера в определенной партии входных данных, и можно сравнить его с настоящей меткой класса из тренировочного датасета. Это используется для подсчета количества правильных ответов. Чтобы сделать это в PyTorch, необходимо воспользоваться функцией .eq(), которая сравнивает значения в двух тензорах и при совпадении возвращает единицу. В противном случае, функция возвращает 0:

Суммируя выходы функции .eq(), получаем счетчик количества раз, когда нейронная сеть выдает правильный ответ. По накопленной сумме правильных предсказаний можно определить общую точность сети на тренировочном датасете. Наконец, проходя по каждой партии входных данных, выводим среднее значение функции потери и точность модели:

После тренировки сети за 10 эпох получаем следующие результаты на тестовой выборке:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *