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

Метод insert класса ModuleList

Метод insert класса ModuleList предназначен для вставки нового подслоя (модуля) в произвольную позицию списка. Первым параметром метод принимает индекс позиции, в которую необходимо вставить модуль, а вторым параметром - сам модуль (экземпляр класса, наследующего nn.Module). При вставке все последующие элементы сдвигаются вправо. Метод изменяет исходный объект ModuleList и ничего не возвращает.

Синтаксис

module_list.insert(index, module)

Пример

Давайте создадим ModuleList с двумя линейными слоями и вставим новый слой в позицию с индексом 1:

import torch import torch.nn as nn # Создаём ModuleList с двумя слоями layers = nn.ModuleList([ nn.Linear(10, 20), nn.Linear(20, 30) ]) print(f"Количество слоёв до вставки: {len(layers)}") # Вставляем новый слой в позицию 1 new_layer = nn.Linear(15, 25) layers.insert(1, new_layer) print(f"Количество слоёв после вставки: {len(layers)}")

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

"Количество слоёв до вставки: 2" "Количество слоёв после вставки: 3"

Пример

Теперь вставим слой в начало списка (индекс 0) и в конец (индекс, равный длине списка):

import torch import torch.nn as nn # Исходный список layers = nn.ModuleList([ nn.Linear(5, 10), nn.Linear(10, 15) ]) print(f"Начальное количество слоёв: {len(layers)}") # Вставка в начало layers.insert(0, nn.Linear(2, 5)) print(f"После вставки в начало: {len(layers)}") # Вставка в конец (индекс равен длине) layers.insert(len(layers), nn.Linear(15, 20)) print(f"После вставки в конец: {len(layers)}")

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

"Начальное количество слоёв: 2" "После вставки в начало: 3" "После вставки в конец: 4"

Пример

Продемонстрируем, что метод вставляет слой именно в указанную позицию, сдвигая остальные элементы. Для этого выведем названия слоёв до и после вставки:

import torch import torch.nn as nn # Создаём ModuleList с именованными слоями layers = nn.ModuleList([ nn.Linear(10, 20), # слой A nn.Linear(20, 30), # слой B nn.Linear(30, 40) # слой C ]) # Выводим названия слоёв до вставки names_before = [f"слой {i}" for i in range(len(layers))] print(f"До вставки: {names_before}") # Вставляем новый слой в позицию 1 layers.insert(1, nn.Linear(15, 25)) # новый слой X # Выводим названия после вставки names_after = [f"слой {i}" for i in range(len(layers))] print(f"После вставки: {names_after}")

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

"До вставки: ['слой 0', 'слой 1', 'слой 2']" "После вставки: ['слой 0', 'слой 1', 'слой 2', 'слой 3']"

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

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