Изучение PyTorch на примерах — Руководство по PyTorch 1.13.1+cu117 документация
Ярлыки
Автор : Джастин Джонсон
Примечание
Это одно из наших старых руководств по PyTorch. Вы можете просмотреть наши последние контент для начинающих в Изучите основы.
В этом учебном пособии представлены основные понятия PyTorch через автономный Примеры.
По своей сути PyTorch предоставляет две основные функции:
Мы будем использовать задачу подгонки \(y=\sin(x)\) с полиномом третьего порядка как наш рабочий пример. Сеть будет иметь четыре параметра и будет обучаться с градиентный спуск для подбора случайных данных путем минимизации евклидова расстояния между выходом сети и истинным выходом.
Примечание
Отдельные примеры можно просмотреть на конец этой страницы.
Содержание
Тензоры
Разминка: numpy
PyTorch: тензоры
Автоград
PyTorch: тензоры и автоградация
PyTorch: определение новых функций автоградации
нн модуль
PyTorch: номер
PyTorch: оптимум
PyTorch: пользовательские модули nn
PyTorch: поток управления + разделение веса
Примеры
Тензоры
Автоград
нн модуль
Разминка: numpy
Прежде чем представить PyTorch, мы сначала реализуем сеть, используя
тупой.
3
y_pred = a + b * x + c * x ** 2 + d * x ** 3
# Расчет и потеря печати
потеря = np.square(y_pred — y).sum()
если т % 100 == 93′)
PyTorch: Tensors
Numpy — отличный фреймворк, но он не может использовать GPU для ускорения своей работы. численные расчеты. Для современных глубоких нейронных сетей часто используются графические процессоры. обеспечивают ускорение в 50 раз или больше, поэтому к сожалению, numpy будет недостаточно для современного глубокого обучения.
Здесь мы представляем самую фундаментальную концепцию PyTorch: Tensor . Тензор PyTorch концептуально идентичен массиву numpy: тензор n-мерный массив, а PyTorch предоставляет множество функций для оперируя этими тензорами. За кулисами тензоры могут отслеживать вычислительный график и градиенты, но они также полезны в качестве универсальный инструмент для научных вычислений.
Кроме того, в отличие от numpy, тензоры PyTorch могут использовать графические процессоры для ускорения
их числовые расчеты.
Чтобы запустить PyTorch Tensor на графическом процессоре, вы просто
необходимо указать правильное устройство.
Здесь мы используем тензоры PyTorch, чтобы подогнать полином третьего порядка к синусоидальной функции. Как и в приведенном выше примере с numpy, нам нужно вручную реализовать переадресацию и обратно проходит по сети:
# --*- кодировка: utf-8 --*-
импортный факел
импортировать математику
dtype = факел.поплавок
устройство = torch.device("процессор")
# device = torch.device("cuda:0") # Раскомментируйте это для запуска на GPU
# Создать случайные входные и выходные данные
x = torch.linspace(-math.pi, math.pi, 2000, устройство=устройство, dtype=dtype)
у = факел.sin(x)
# Произвольно инициализируем веса
a = torch.randn((), устройство=устройство, dtype=dtype)
b = torch.randn((), устройство=устройство, dtype=dtype)
c = torch.randn((), устройство=устройство, dtype=dtype)
d = torch.randn((), устройство=устройство, dtype=dtype)
скорость_обучения = 1e-6
для t в диапазоне (2000):
# Прямой проход: вычислить предсказанный y
y_pred = a + b * x + c * x ** 2 + d * x ** 3
# Расчет и потеря печати
потеря = (y_pred - y).
3')
PyTorch: Tensors и autograd
В приведенных выше примерах нам пришлось вручную реализовывать как прямой, так и обратные проходы нашей нейронной сети. Вручную внедрить обратный проход не имеет большого значения для небольшой двухслойной сети, но может быстро становятся очень волосатыми для больших сложных сетей.
К счастью, мы можем использовать автоматический дифференциация для автоматизации вычисления обратных проходов в нейронных сетях. Пакет autograd в PyTorch предоставляет именно эту функциональность. При использовании autograd прямой проход вашей сети будет определять вычислительный граф ; узлы в графе будут тензорами, а ребра будут функции, которые производят выходные тензоры из входных тензоров. Затем обратное распространение по этому графу позволяет легко вычислить градиенты.
Звучит сложно, но на практике это довольно просто. Каждый тензор
представляет узел в вычислительном графе. Если является тензором, который имеет x., тогда
requires_grad=True x.grad — это еще один тензор, содержащий
градиент x относительно некоторого скалярного значения.
Здесь мы используем PyTorch Tensors и autograd для реализации нашей подходящей синусоиды. пример с полиномом третьего порядка; теперь нам больше не нужно вручную реализовать обратный проход по сети:
PyTorch: определение новых функций автоградации
Под капотом каждый примитивный оператор автоградации на самом деле представляет собой две функции которые работают с тензорами. Функция forward вычисляет выходные данные Тензоры из входных тензоров. назад функция получает градиент выходных тензоров относительно некоторого скалярного значения, и вычисляет градиент входных тензоров относительно того же скалярное значение.
В PyTorch мы можем легко определить собственный оператор автоградации, определив
подкласс torch.autograd.Функция и реализация вперед и назад функции.
Затем мы можем использовать наш новый оператор autograd:
создание экземпляра и вызов его как функции, передача
Тензоры, содержащие входные данные. 93-3x\справа)\)
— многочлен Лежандра третьей степени. Пишем свой кастомный автоград
функция для вычисления вперед и назад \(P_3\) и использовать ее для реализации
наша модель:
PyTorch: nn
Вычислительные графы и автоград — очень мощная парадигма для определение сложных операторов и автоматическое получение производных; однако для больших нейронных сетей сырой автоград может быть слишком низкоуровневым.
При построении нейронных сетей мы часто думаем о том, чтобы
расчет в слоев , некоторые из которых имеют
В TensorFlow такие пакеты, как
Керас,
TensorFlow-Слим,
и TFLearn предоставляют абстракции более высокого уровня
над необработанными вычислительными графами, которые полезны для построения нейронных
сети.
В PyTorch для этой же цели служит пакет nn . нн package определяет набор из модулей , которые примерно эквивалентны
слои нейронной сети. Модуль получает входные тензоры и вычисляет
выходные тензоры, но также может содержать внутреннее состояние, такое как тензоры
содержащие обучаемые параметры. 93).
р = факел.тензор ([1, 2, 3])
xx = x.unsqueeze(-1).pow(p)
# В приведенном выше коде x.unsqueeze(-1) имеет форму (2000, 1), а p имеет форму
# (3,), в этом случае для получения тензора будет применяться широковещательная семантика
№ формы (2000, 3)
# Используйте пакет nn, чтобы определить нашу модель как последовательность слоев. nn.Последовательный
# — это модуль, который содержит другие модули и последовательно применяет их к
# произвести его вывод. Линейный модуль вычисляет выход из ввода, используя
# линейная функция и содержит внутренние тензоры для ее веса и смещения.
# Слой Flatten сглаживает выходные данные линейного слоя до одномерного тензора,
# чтобы соответствовать форме `y`.

PyTorch: optim
До этого момента мы обновляли вес наших моделей вручную
изменение тензоров, содержащих обучаемые параметры, с помощью torch.no_grad() .
Это не является большой нагрузкой для простых алгоритмов оптимизации, таких как стохастический алгоритм.
градиентный спуск, но на практике мы часто обучаем нейронные сети, используя более
сложные оптимизаторы, такие как AdaGrad, RMSProp, Adam и т. д.
Пакет optim в PyTorch абстрагирует идею оптимизации
алгоритм и предоставляет реализации часто используемых оптимизаций
алгоритмы.
В этом примере мы будем использовать пакет nn для определения нашей модели как
ранее, но мы будем оптимизировать модель, используя предоставленный алгоритм RMSprop
пакетом optim :
PyTorch: Custom nn Modules
Иногда вам может понадобиться указать более сложные модели, чем
последовательность существующих модулей; для этих случаев вы можете определить свой собственный
Модули путем создания подкласса nn. и определения
Module прямого , который
получает входные тензоры и создает выходные тензоры, используя другие
модули или другие автоградные операции с тензорами.
В этом примере мы реализуем наш полином третьего порядка как пользовательский модуль подкласс:
PyTorch: поток управления + распределение веса
В качестве примера динамических графиков и распределения веса мы реализуем очень странная модель: полином третьего-пятого порядка, который на каждом прямом проходе выбирает случайное число от 3 до 5 и использует это количество заказов, повторно используя одни и те же веса несколько раз для вычисления четвертого и пятого порядка.
Для этой модели мы можем использовать обычное управление потоком Python для реализации цикла, и мы можем реализовать разделение веса, просто повторно используя один и тот же параметр несколько раз. раз при определении прямого прохода.
Мы можем легко реализовать эту модель как подкласс модуля:
Вы можете просмотреть приведенные выше примеры здесь.
Тензоры
Автоград
нн Модуль ‘ document.getElementById(«статья-pytorch»).insertAdjacentHTML(‘afterBegin’, div) }Документы
Доступ к исчерпывающей документации для разработчиков по PyTorch
Просмотр документов
Учебные пособия
Подробные учебные пособия для начинающих и опытных разработчиков
View Tutorials
Resources
Find development resources and get your questions answered
View Resources
math-3-unit-1-practice-functions-and-inverses-answers — Google Suche
AlleBilderVideosBücherMapsNewsShopping
Suchoptionen
[PDF] Math 3 Unit 1 Practice, Functions and Inverses
www.cabarrus.k12.nc.us › cms › lib › Centricity › Domain
Math 3 Unit 1 Practice, Functions and Inverses.
Множественный выбор (Калькулятор неактивен). Определите вариант ответа, который лучше всего дополняет утверждение или отвечает на …
Математика 3 Модуль 1 Тест Обзор функций и их инверсий — YouTube
www.youtube.com › смотреть
15.03.2020 · Я преподаю NC Math 3 и провожу перевернутый класс. Я делаю видео уроки для своих студентов для каждого …
Дауэр: 57:05
Прислан: 15.03.2020
[PDF] УРОК 1-3 — Обратные функции — Практика и решение задач
keepcalmmathon.weebly. com › uploads › m1_lesson_1.1-1.3_review…
Учащийся читает 3 страницы книги каждые 5 минут в течение 1 часа. Напишите функцию, моделирующую эту ситуацию. Определите домен из ситуации и …
[PDF] Функции и их обратные 1.5
mrwumath.weebly.com › загрузки › im3_1.5.pdf
Запишите свои ответы в экспоненциальной форме с положительными показателями степени. 1. √x². … 1} // f(x). 0. 3. 6. 9. 12. х.х. Средняя математика III.
X. = Функции и …
[PDF] Функции и их инверсии — Mathematics Vision Project
www.mathematicsvisionproject.org › загрузки
МОДУЛЬ 1. Функции и их инверсии. ВТОРИЧНЫЙ. МАТЕМАТИКА ТРЕТЬЯ… 3. Напишите вопрос, на который проще всего ответить с помощью графика Карлоса. Написать.
Математика 3. Часть 1. Функции и инверсии Карточки — Quizlet
quizlet.com › Математика › Алгебра
Награды NC Math 3 Review Учитесь бесплатно с помощью карточек, игр и многого другого.
Mr. Gloade — Модуль 1 Функции и их инверсии — Сайты Google
site.google.com › home › common-core-math-3
Модуль 1 — Функции и их инверсии. Дата Тема… 11.01.2022 День 5 Графики обратных функций. 12.01.2022 День 6 Алгебраический поиск обратных функций.
Модуль 01 — Функции и их инверсии — Castillo — Сайты Google
site.google.com › unit-1 —inverse-functions
Math 3 Домашнее задание/Календарь заданий · Math 3 Syllabus · Учебник и домашнее задание Ссылки на помощь.

3')