[Быстрое обучение] Введение в 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. |
Реализация модели
Создание набора данных
На этот раз мы подготовим 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.
обсуждение
Список комментариев
Пока нет комментариев