Скрытые слои и параметры

Введение в глубокое обучение с PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Стек слоёв с nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(

nn.Linear(n_features, 8),
nn.Linear(8, 4), nn.Linear(4, n_classes)
)
  • Входные данные проходят через линейные слои
  • Слои внутри nn.Sequential() являются скрытыми
Введение в глубокое обучение с PyTorch

Стек слоёв с nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(n_features, 8), # n_features represents number of input features
    nn.Linear(8, 4),
    nn.Linear(4, n_classes) # n_classes represents the number of output classes  
)
  • Входные данные проходят через линейные слои
  • Слои внутри nn.Sequential() являются скрытыми
  • n_features и n_classes определяются набором данных
Введение в глубокое обучение с PyTorch

Добавление слоёв

Иллюстрация нейронной сети с двумя скрытыми слоями

Введение в глубокое обучение с PyTorch

Добавление слоёв

Иллюстрация нейронной сети с четырьмя скрытыми слоями

Введение в глубокое обучение с PyTorch

Добавление слоёв

Иллюстрация нейронной сети с четырьмя скрытыми слоями

Введение в глубокое обучение с PyTorch

Добавление слоёв

Иллюстрация нейронной сети с четырьмя скрытыми слоями

Введение в глубокое обучение с PyTorch

Добавление слоёв

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
Введение в глубокое обучение с PyTorch

Добавление слоёв

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18), # Takes 10 features and outputs 18
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
  • Вход 10 ➡ выход 18 ➡ выход 20 ➡ Выход 5
Введение в глубокое обучение с PyTorch

Добавление слоёв

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20), # Takes 18 and outputs 20
    nn.Linear(20, 5)
)
  • Вход 10 ➡ выход 18 ➡ выход 20 ➡ Выход 5
Введение в глубокое обучение с PyTorch

Добавление слоёв

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5) # Takes 20 and outputs 5
)
  • Вход 10 ➡ выход 18 ➡ выход 20 ➡ Выход 5
Введение в глубокое обучение с PyTorch

Слои состоят из нейронов

$$

  • Полносвязный — каждый нейрон связан со всеми нейронами предыдущего слоя

Иллюстрация входного и выходного слоёв со стрелками, соединяющими слои

Введение в глубокое обучение с PyTorch

Слои состоят из нейронов

$$

  • Полносвязный — каждый нейрон связан со всеми нейронами предыдущего слоя

$$

  • Нейрон в линейном слое:

Иллюстрация входного и выходного слоёв со стрелками и выделенным кружком вокруг одного выходного нейрона

Введение в глубокое обучение с PyTorch

Слои состоят из нейронов

$$

  • Полносвязный — каждый нейрон связан со всеми нейронами предыдущего слоя

$$

  • Нейрон в линейном слое:
    • Выполняет линейную операцию, используя все нейроны предыдущего слоя

Иллюстрация входного и выходного слоёв со стрелками, выделенным нейроном и подсвеченными связями

Введение в глубокое обучение с PyTorch

Слои состоят из нейронов

$$

  • Полносвязный — каждый нейрон связан со всеми нейронами предыдущего слоя

$$

  • Нейрон в линейном слое:
    • Выполняет линейную операцию, используя все нейроны предыдущего слоя
    • Имеет N+1 параметров: N от входов и 1 для смещения

N+1

Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

$$

Ручной подсчёт параметров:

  • Первый слой — 4 нейрона, у каждого 8+1 параметров. 9 × 4 = 36 параметров
Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

$$

Ручной подсчёт параметров:

  • Первый слой — 4 нейрона, у каждого 8+1 параметров. 9 × 4 = 36 параметров
Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

$$

Ручной подсчёт параметров:

  • Первый слой — 4 нейрона, у каждого 8+1 параметров. 9 × 4 = 36 параметров
  • Второй слой — 2 нейрона, у каждого 4+1 параметров. 5 × 2 = 10 параметров
Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

$$

Ручной подсчёт параметров:

  • Первый слой — 4 нейрона, у каждого 8+1 параметров. 9 × 4 = 36 параметров
  • Второй слой — 2 нейрона, у каждого 4+1 параметров. 5 × 2 = 10 параметров
  • 36 + 10 = 46 обучаемых параметров
Введение в глубокое обучение с PyTorch

Параметры и ёмкость модели

  • Больше скрытых слоёв = больше параметров = выше ёмкость модели

$$

Блок кода для двухслойной сети

$$

Использование PyTorch:

  • .numel(): возвращает количество элементов в тензоре
total = 0
for parameter in model.parameters():
    total += parameter.numel()
print(total)
46
Введение в глубокое обучение с PyTorch

Баланс между сложностью и эффективностью

Баланс между сложностью и эффективностью

Введение в глубокое обучение с PyTorch

Давайте потренируемся!

Введение в глубокое обучение с PyTorch

Preparing Video For Download...