/ AI

nn.Module

torch.nn.Module

PyTorch에서 nn.Module은 딥 러닝 모델을 구성하는 데 중요한 역할을 하는 클랙스 입니다. 이 클래스는 신경망 계층(layer)들을 모델 내에서 쉽게 조직하고 관리할 수 있도록 도와줍니다. nn.Module은 PyTorch의 중요한 기능 중 하나로, 사용자 정의 모델을 만들 때 사용되는 기본 빌딩 블록입니다.

nn.Module 클래스를 상속하여 사용자 정의 모델을 만들 수 있습니다. nn.Module을 상속하면 모델의 파라미터를 추적하고, 모델을 GPU로 옮기는 등의 기능을 자동으로 처리할 수 있습니다.

일반적으로 PyTorch 모델은 다양한 계층과 파라미터로 구성됩니다. nn.Module은 이러한 계층들을 논리적으로 그룹화하고, 순차적으로 실행되도록 도와줍니다. 예를 들어, 합성곱 계층(Convolutional Layer), 선형 계층(Linear Layer), ReLU 활성화 함수 등을 포함하는 모델을 만들 때, 이러한 계층들을 nn.Module의 서브클래스로 정의하여 쉽게 조합할 수 있습니다.

nn.Module을 사용하여 모델을 정의할 때, init 메서드에서 모델에 포함될 각 계층들을 초기화하고, forward 메서드에서 모델이 입력 데이터를 어떻게 처리할지를 정의합니다. forward 메서드는 모델이 순방향으로 데이터를 전달하는데 사용되며, 이러한 순발향 계산은 학습 및 추론에 사용됩니다.

정의

  • torch.nn.Module(*args, **kwargs)

Base class for all neural network modules.

Your models should also subclass this class.

Modules can also contain other Modules, allowing to nest them in a tree structure. You can assign the submodules as regular attributes:

모든 신경망 모듈의 기본 클래스입니다.

모델은 또한 이 클래스를 하위 클래스로 분류해야 합니다.

모듈은 다른 모듈을 포함할 수 있으므로 트리 구조에 네스팅할 수 있습니다. 하위 모듈을 일반 속성으로 할당할 수 있습니다:

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

추후 작성