[Быстрое обучение] Введение в Pytorch (XNUMX): реализация регрессии MLP и изучение основ PyTorch

В прошлый раз я рассмотрел, как обращаться с фонариком, который является основой PyTorch.

На этот раз я хотел бы реализовать регрессию многослойного перцептрона (MLP) в PyTorch и увидеть основные пакеты PyTorch.

Общий поток

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

  • Создание набора входных данных, итеративная обработка (Dataset, Dataloader)
  • Определение нейронной сети (nn.Module)
  • Расчет потерь, градиент распространяется на параметры сети (nn.Module)
  • Обновить веса сети (Оптимизатор)

Основные пакеты PyTorch

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

факел.тензорМногомерный массив. Структура данных, используемая в PyTorch.
факел.автоградРеализуйте прямое / обратное распространение.Поддерживает операцию автоматического дифференцирования для Tensor, такую ​​как обратное распространение (backward ()).
torch.utils.dataОн включает в себя такие утилиты, как «Набор данных», который собирает данные для ввода и их метку в виде набора, и «Загрузчик данных», который извлекает данные из набора данных в мини-пакете и передает их модели.
torch.nn.МодульИспользуется для построения нейронных сетей.Отвечает за инкапсуляцию параметров, таких как сохранение и загрузка моделей и перенос на графический процессор.
факел.оптимПозволяет использовать алгоритмы оптимизации параметров, такие как SDG и Adam.
Основные пакеты PyTorch

Реализация модели

Создание набора данных

На этот раз мы подготовим sin (5x) плюс случайные числа в качестве практических данных с помощью numpy.from_numpy()Преобразовать в torch.tensor с помощью.

Определение модели

В pytorch модель определяется как «класс python», который наследуется от класса nn.Module.

класс MLP (nn.Module): Определенный класс MLP наследуется от родительского класса nn.Module
def init (): Принимает аргументы и создает экземпляры
супер (MLP, сам) .init (): Наследовать родительский класс с супер функцией
def вперед (self, x): Работает, когда функция вызывается после создания экземпляра. Когда вы определяете прямую функцию, обратная функция (вычисление градиента) также определяется автоматически.

.parameters()Вы можете получить структуру и параметры сети с помощью.

Расчет потерь / обратное распространение / обновление веса

Чтобы понять индивидуальное поведение, мы возьмем часть данных из x и введем их в нейронную сеть, чтобы увидеть, как параметры меняются из-за вычислений ошибок и обновлений весов.

Попробуйте повернуть цикл обучения

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

Визуализация расчетного графика

Структуру трехслойного MLP, созданного на этот раз, можно визуализировать с помощью пакета Python под названием torchviz.parameters()Пожалуйста, когда этого недостаточно.

До сих пор мы идентифицировали PyTorch и его основные пакеты PyTorch посредством реализации регрессии MLP.