В этом блоге мы обсудим, как использовать « torch.no_grad » в PyTorch.
Что такое метод «torch.no_grad» в PyTorch?
« torch.no_grad » используется для управления контекстом в среде разработки PyTorch. Его цель — остановить расчет градиентов для связи между последующими слоями модели глубокого обучения. Полезность этого метода заключается в том, что когда в конкретной модели градиенты не требуются, их можно отключить, чтобы выделить больше аппаратных ресурсов для обработки цикла обучения модели.
Как использовать метод «torch.no_grad» в PyTorch?
Градиенты рассчитываются при обратном проходе в PyTorch. По умолчанию в PyTorch активирована автоматическая дифференциация для всех моделей машинного обучения. Деактивация вычисления градиента необходима разработчикам, у которых нет достаточных ресурсов аппаратной обработки.
Следуйте инструкциям ниже, чтобы узнать, как использовать « torch.no_grad ” метод отключения расчета градиентов в PyTorch:
Шаг 1. Запустите Colab IDE.
Google Colaboratory — отличный выбор платформы для разработки проектов с использованием платформы PyTorch благодаря выделенным графическим процессорам. Иди в Колаб Веб-сайт и откройте « Новый блокнот ' как показано:
Шаг 2. Установите и импортируйте библиотеку Torch.
Вся функциональность PyTorch инкапсулирована в « факел » библиотека. Его установка и импорт необходимы перед началом работы. « !пип » установочный пакет Python используется для установки библиотек и импортируется в проект с помощью « Импортировать » команда:
!pip установить факелимпортный фонарь
Шаг 3. Определите тензор PyTorch с градиентом
Добавьте в проект тензор PyTorch, используя « факел.тензор() метод. Затем придайте ему действительный градиент, используя « require_grad = Истина », как показано в коде ниже:
A = torch.tensor([5.0], require_grad=True)
Шаг 4. Используйте метод «torch.no_grad», чтобы удалить градиент.
Затем удалите градиент из ранее определенного тензора, используя « torch.no_grad » метод:
с torch.no_grad():Б = А**2 + 16
Приведенный выше код работает следующим образом:
- « no_grad() ” метод используется внутри “ с ' петля.
- Градиент каждого тензора, содержащегося внутри цикла, удален.
- Наконец, определите образец арифметического вычисления, используя ранее определенный тензор, и присвойте его « Б переменная, как показано выше:
Шаг 5. Проверьте удаление градиента
Последний шаг — проверить, что только что было сделано. Градиент от тензора « А был удален, и его необходимо проверить в выводе с помощью команды « Распечатать() » метод:
print('Вычисление градиента с помощью torch.no_grad: ', A.grad)print('\nИсходный тензор: ', A)
print('\nПример арифметического расчета: ', B)
Приведенный выше код работает следующим образом:
- « выпускник ” метод дает нам градиент тензора “ А ». В выводе ниже ничего не отображается, поскольку градиент был удален с помощью « torch.no_grad метод.
- Исходный тензор по-прежнему показывает, что он имеет градиент, как видно из « require_grad = Истина ” в выводе.
- Наконец, пример арифметического расчета показывает результат уравнения, определенного ранее:
Примечание : Вы можете получить доступ к нашему блокноту Colab по этому адресу. связь .
Профессиональный совет
« torch.no_grad «Метод идеален там, где градиенты не нужны или когда есть необходимость снизить вычислительную нагрузку на оборудование. Другое использование этого метода — во время вывода, поскольку модель используется только для прогнозирования на основе новых данных. Поскольку обучение не требуется, имеет смысл просто отключить расчет градиентов.
Успех! Мы показали вам, как использовать метод «torch.no_grad» для отключения градиентов в PyTorch.
Заключение
Использовать ' torch.no_grad ” в PyTorch, определив его внутри “ с » и у всех тензоров, содержащихся внутри, будет удален градиент. Это приведет к улучшению скорости обработки и предотвратит накопление градиентов в цикле обучения. В этом блоге мы продемонстрировали, как это « torch.no_grad » можно использовать для отключения градиентов выбранных тензоров в PyTorch.