РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
492 of 769 menu

Метод extend

Метод extend класса Sequential предназначен для добавления нескольких слоёв в конец последовательной модели. В отличие от метода append, который добавляет один модуль, метод extend принимает итерируемую коллекцию модулей и добавляет их все по порядку. Это удобно, когда нужно добавить сразу целый блок слоёв или объединить несколько последовательных моделей.

Синтаксис

model.extend(modules)

Метод принимает один параметр:

  • ⁅b⁆modules⁅/b⁆ - итерируемая коллекция (список, кортеж или другой итератор) модулей PyTorch, которые будут добавлены в конец модели

Пример

Давайте создадим последовательную модель и добавим в неё несколько линейных слоёв с помощью метода extend:

import torch from torch import nn model = nn.Sequential( nn.Linear(10, 20), nn.ReLU() ) model.extend([ nn.Linear(20, 30), nn.ReLU(), nn.Linear(30, 5) ]) print(model)

Результат выполнения кода:

Sequential( (0): Linear(in_features=10, out_features=20, bias=True) (1): ReLU() (2): Linear(in_features=20, out_features=30, bias=True) (3): ReLU() (4): Linear(in_features=30, out_features=5, bias=True) )

Пример

Метод extend также может принимать другую последовательную модель, что позволяет объединять несколько моделей:

import torch from torch import nn model1 = nn.Sequential( nn.Linear(10, 20), nn.ReLU() ) model2 = nn.Sequential( nn.Linear(20, 15), nn.ReLU(), nn.Linear(15, 5) ) model1.extend(model2) print(model1)

Результат выполнения кода:

Sequential( (0): Linear(in_features=10, out_features=20, bias=True) (1): ReLU() (2): Linear(in_features=20, out_features=15, bias=True) (3): ReLU() (4): Linear(in_features=15, out_features=5, bias=True) )

Пример

Важно отметить, что размерности слоёв должны соответствовать друг другу. Давайте посмотрим, что произойдёт при несоответствии размерностей:

import torch from torch import nn model = nn.Sequential( nn.Linear(10, 20) ) model.extend([ nn.Linear(30, 5) # Неправильная размерность ]) x = torch.randn(5, 10) try: y = model(x) except RuntimeError as e: print("Ошибка:", str(e)[:60], "...")

Результат выполнения кода:

"Ошибка: mat1 and mat2 shapes cannot be multiplied (5x20 and 30x5) ..."

Смотрите также

  • класс Sequential,
    который определяет контейнер для последовательного выполнения слоёв
  • метод append,
    который добавляет один слой в конец последовательной модели
  • метод insert,
    который вставляет слой на указанную позицию в модели
  • метод pop,
    который удаляет последний слой из последовательной модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить