본문 바로가기
함수 설명/인공지능 (Pytorch)

[PyTorch] 신경망의 기본 구성 요소: torch.nn.Linear() 사용 가이드

by First Adventure 2024. 8. 17.
반응형

소개

  torch.nn.Linear는 PyTorch에서 신경망의 완전 연결(fully connected) 레이어를 구현하는 데 사용되는 클래스입니다. 완전 연결 레이어는 입력 데이터에 대해 선형 변환(linear transformation)을 수행하여, 이를 다음 레이어로 전달하는 역할을 합니다. 신경망의 기본 구성 요소로, 입력과 출력 사이의 가중치(weight)와 편향(bias)을 학습하여 최적의 출력을 생성합니다.

 

기본 사용법

상세 설명

  • Linear 레이어의 작동 방식
    • torch.nn.Linear는 입력 텐서에 대해 선형 변환을 수행합니다. 이 변환은 입력 값과 가중치 행렬의 곱에 편향을 더하는 방식으로 이루어집니다.
    • 이 레이어는 신경망의 출력 레이어나 중간 레이어로 사용되며, 데이터를 다음 레이어로 전달하기 전에 필요한 선형 변환을 수행합니다.
  • Linear 레이어의 적용 분야
    • MLP(다층 퍼셉트론), CNN(합성곱 신경망), RNN(순환 신경망) 등 다양한 신경망 모델에서 사용됩니다.
      분류, 회귀, 특징 추출 등 다양한 딥러닝 작업에서 사용됩니다.

예시 설명

  • in_features: 입력 데이터의 크기(특징 수)를 지정합니다. 예를 들어, in_features=5는 입력 데이터가 5개의 특징을 가짐을 의미합니다.
  • out_features: 출력 데이터의 크기(특징 수)를 지정합니다. 예를 들어, out_features=2는 2개의 출력 특징을 생성합니다.
  • bias: True로 설정하면, 각 출력에 편향(bias) 값을 추가합니다. 기본값은 True입니다.
  • linear_layer = nn.Linear(in_features=5, out_features=2)는 입력 크기가 5이고 출력 크기가 2인 선형 변환 레이어를 정의합니다.
  • input_tensor = torch.randn(1, 5)는 1x5 크기의 입력 텐서를 생성하며, linear_layer(input_tensor)를 통해 이 입력에 선형 변환을 적용하여 1x2 크기의 출력 텐서를 생성합니다.
import torch
import torch.nn as nn

# Linear 레이어 정의
linear_layer = nn.Linear(in_features=5, out_features=2)
# linear_layer = nn.Linear(in_features=5, out_features=2, bias=True)

# 입력 텐서 생성
input_tensor = torch.randn(1, 5)

# 선형 변환 적용
output_tensor = linear_layer(input_tensor)
print(output_tensor)

 

라이센스

  PyTorch의 표준 라이브러리와 내장 함수들은 BSD-style license 하에 배포됩니다. 이 라이센스는 자유 소프트웨어 라이센스로, 상업적 사용을 포함한 거의 모든 용도로 사용이 가능합니다. 라이센스와 저작권 정보는 PyTorch의 공식 GitHub 리포지토리에서 확인할 수 있습니다.

 

관련 내용

  [PyTorch] 신경망의 기본 구성 요소: torch.nn.Linear() 사용 가이드

  [PyTorch] CNN 모델의 기초: torch.nn.Conv2d() 사용 가이드

  [PyTorch] CNN에서 풀링 계층 활용하기: torch.nn.MaxPool2d() 사용 가이드

  [PyTorch] 비선형성을 추가하는 핵심: torch.nn.ReLU() 사용 가이드

  [PyTorch] 다중 클래스 분류에서 필수: torch.nn.CrossEntropyLoss() 사용 가이드

  [PyTorch] 회귀 문제에서 필수: torch.nn.MSELoss() 사용 가이드

반응형