Практическое глубокое обучение 4.3 Простая реализация многослойных персептронов

глубокое обучение PyTorch

Примите участие в 13-м дне ноябрьского испытания обновлений и узнайте подробности события:Вызов последнего обновления 2021 г.

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

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

import torch
from torch import nn
from d2l import torch as d2l
net = nn.Sequential(nn.Flatten(),
                    nn.Linear(784, 256),
                    nn.ReLU(),
                    nn.Linear(256, 10))

def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights);
  • net =
    • Настройте модель, сначала разверните ввод и преобразуйте его в вектор
    • Входной слой для скрытого слоя 784→256
    • Установите функцию активации слоя ReLU
    • Установить скрытый слой в выходной слой
  • init_weightsИнициализировать веса для каждого слоя
  • будетinit_weightsприменяется к сети.
batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss()
trainer = torch.optim.SGD(net.parameters(), lr=lr)
  • Здесь batch_size — установить размер пакета мини-пакета на 256, lr — установить скорость обучения на 0,1, а num_epochs — установить количество итераций на 10.
  • Процесс обучения также напрямую использует SGD, который поставляется вместе с фреймворком.
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

В этом коде появляется предупреждение пользователя, упомянутое в разделе «Ручная реализация регрессии Softmax». можно игнорировать напрямую. Эта проблема была со мной с момента раздела о ручной реализации softmax, но я просто проигнорировал ее. Если вы хотите узнать причину предупреждения и как его решить, вы можете прочитать это здесь:Подробное объяснение torchvision.transforms.ToTensor | Предупреждение пользователя при использовании transforms.ToTensor() - Самородки (juejin.cn)

тренировочный процессРеализация точно такая же, как когда мы реализовали регрессию softmax, и этот модульный дизайн позволяет нам изолировать вещи, связанные с архитектурой модели.

Больше можно увидеть здесь:«Практическое глубокое обучение» — колонка LolitaAnn — Nuggets (juejin.cn)