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

Метод share_memory

Метод share_memory класса Module перемещает все тензоры параметров и буферов модуля в разделяемую память. Это необходимо для эффективной работы с модулем в многопроцессных сценариях, когда несколько процессов должны иметь доступ к одним и тем же данным модели без копирования. Метод работает in-place и возвращает сам модуль, что позволяет использовать его в цепочках вызовов.

Синтаксис

module.share_memory()

Пример

Давайте создадим простую линейную модель и переместим её в разделяемую память:

import torch import torch.nn as nn model = nn.Linear(10, 5) model.share_memory() print(model.weight.is_shared()) print(model.bias.is_shared())

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

True True

Пример

Используем метод в цепочке вызовов сразу после создания модели:

import torch import torch.nn as nn model = nn.Sequential( nn.Linear(20, 10), nn.ReLU(), nn.Linear(10, 2) ).share_memory() for param in model.parameters(): print(param.is_shared())

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

True True True True

Пример

Проверим, что метод работает рекурсивно для всех вложенных модулей:

import torch import torch.nn as nn class MyModel(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(5, 3) self.fc2 = nn.Linear(3, 1) model = MyModel() model.share_memory() print(model.fc1.weight.is_shared()) print(model.fc2.weight.is_shared())

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

True True

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

  • класс Module,
    который является базовым для всех нейросетевых модулей
  • метод to,
    который перемещает модуль на указанное устройство
  • метод cuda,
    который перемещает модуль на GPU
  • метод cpu,
    который перемещает модуль на CPU
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить