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

Класс Module

Класс Module является базовым классом для всех нейросетевых слоёв в PyTorch. Любой пользовательский слой или модель должны наследоваться от этого класса. Основная задача класса Module - предоставить единый интерфейс для построения нейросетей, управления параметрами, переключения режимов обучения и сохранения состояния. При создании собственного слоя необходимо переопределить метод forward, в котором описывается преобразование данных.

Синтаксис

class MyLayer(torch.nn.Module): def __init__(self): super().__init__() # инициализация параметров и подслоёв def forward(self, x): # преобразование входных данных return x

Пример

Давайте создадим простой полносвязный слой без смещения:

import torch class LinearLayer(torch.nn.Module): def __init__(self, in_features, out_features): super().__init__() self.weight = torch.nn.Parameter( torch.randn(in_features, out_features) ) def forward(self, x): return x @ self.weight layer = LinearLayer(3, 2) t = torch.tensor([1.0, 2.0, 3.0]) res = layer(t) print(res)

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

tensor([-0.8748, -3.0315], grad_fn=<SqueezeBackward3>)

Пример

Создадим простую нейросеть из двух слоёв с функцией активации:

import torch class SimpleNet(torch.nn.Module): def __init__(self): super().__init__() self.fc1 = torch.nn.Linear(10, 5) self.fc2 = torch.nn.Linear(5, 1) self.relu = torch.nn.ReLU() def forward(self, x): x = self.relu(self.fc1(x)) x = self.fc2(x) return x model = SimpleNet() t = torch.randn(3, 10) res = model(t) print(res.shape)

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

torch.Size([3, 1])

Пример

Используем метод train для переключения в режим обучения:

import torch class DropoutNet(torch.nn.Module): def __init__(self): super().__init__() self.fc = torch.nn.Linear(5, 5) self.dropout = torch.nn.Dropout(0.5) def forward(self, x): x = self.fc(x) x = self.dropout(x) return x model = DropoutNet() print(f"train mode: {model.training}") model.train() print(f"train mode: {model.training}")

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

"train mode: True" "train mode: True"

Пример

Переключим модель в режим оценки с помощью метода eval:

import torch model = DropoutNet() print(f"train mode: {model.training}") model.eval() print(f"train mode: {model.training}")

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

"train mode: True" "train mode: False"

Пример

Получим все параметры модели с помощью метода parameters:

import torch model = SimpleNet() for name, param in model.named_parameters(): print(f"{name}: {param.shape}")

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

"fc1.weight: torch.Size([5, 10])" "fc1.bias: torch.Size([5])" "fc2.weight: torch.Size([1, 5])" "fc2.bias: torch.Size([1])"

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

  • метод forward,
    который определяет преобразование данных в слое
  • метод train,
    который переключает модуль в режим обучения
  • метод eval,
    который переключает модуль в режим оценки
  • метод parameters,
    который возвращает итератор по параметрам модуля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить