PyTorch Document 2

2023. 3. 16. 19:04· AI/Pytorch
목차
  1. torch.linalg
  2. torch.nn
  3. nn.identity
  4. Linear vs LazyLinear

torch.linalg

torch.linalg 모듈은 선형 대수(Linear Algebra)와 관련된 다양한 함수를 제공하는 PyTorch의 서브모듈입니다. 이 모듈은 CPU와 GPU에서 실행될 수 있는 고성능의 BLAS 및 LAPACK 라이브러리에 의존합니다.

주요 기능은 다음과 같습니다.

 

  • torch.linalg.norm: 텐서의 노름을 계산합니다.
  • torch.linalg.matrix_power: 주어진 행렬의 거듭제곱을 계산합니다.
  • torch.linalg.eig: 정방행렬(e.g., covariance matrix)의 고유값과 고유벡터를 계산합니다.
  • torch.linalg.svd: 특이값 분해(Singular Value Decomposition, SVD)를 계산합니다.
  • torch.linalg.cholesky: 정방행렬의 촐레스키 분해를 계산합니다.
  • torch.linalg.solve: 선형 연립 방정식을 푸는 함수입니다.
  • torch.linalg.inv: 정방행렬의 역행렬을 계산합니다.

 

이 외에도 다양한 함수들이 있습니다.

https://pytorch.org/docs/stable/linalg.html#

 

torch.linalg — PyTorch 1.13 documentation

Shortcuts

pytorch.org

 

torch.nn

torch.nn은 딥러닝 모델을 만들 때 필요한 다양한 레이어와 함수들을 제공하는 PyTorch의 서브모듈입니다. 이 모듈을 사용하여 사용자 정의 모델을 만들거나 사전에 정의된 모델을 사용할 수 있습니다.

 

  • torch.nn의 가장 중요한 기능은 다음과 같습니다.
  • torch.nn.Module: 모든 뉴럴 네트워크 모듈의 기본 클래스입니다. 이 클래스를 상속하여 사용자 정의 모델을 만들 수 있습니다.
  • torch.nn.Linear: 입력과 출력의 선형 변환을 수행하는 레이어입니다.
  • torch.nn.Conv2d: 2D 컨볼루션 레이어입니다.
  • torch.nn.BatchNorm2d: 2D 배치 정규화 레이어입니다.
  • torch.nn.Dropout: 드롭아웃 레이어입니다.
  • torch.nn.ReLU: ReLU(Rectified Linear Unit) 활성화 함수입니다.
  • torch.nn.Sigmoid: 시그모이드 활성화 함수입니다.
  • torch.nn.CrossEntropyLoss: 다중 클래스 분류 작업에서 사용하는 손실 함수입니다.
  • torch.nn.MSELoss: 회귀 작업에서 사용하는 손실 함수입니다.

 

이 외에도 다양한 레이어와 함수들이 있습니다. torch.nn은 딥러닝 모델을 만드는데 필수적인 모듈이므로, 딥러닝을 공부하고 모델을 만드는 경우에는 torch.nn을 자세히 공부하는 것이 중요합니다.

 

 

https://pytorch.org/docs/stable/nn.html

 

torch.nn — PyTorch 1.13 documentation

Shortcuts

pytorch.org

 

 

nn.identity

 

nn.Identity는 PyTorch의 뉴럴 네트워크 모듈 중 하나로, 입력값을 그대로 출력하는 모듈입니다. 즉, nn.Identity는 아무런 가중치도 없이 입력값을 그대로 전달하므로, 일종의 "평범한" 모듈입니다.

  이 모듈은 특히 네트워크의 출력값이 아닌 중간 계층에서 출력값을 살펴보고자 할 때 유용합니다. 예를 들어, 네트워크의 중간 결과값이 필요한 경우, 이전 레이어에서 출력된 텐서를 그대로 전달하기 위해 nn.Identity 모듈을 사용할 수 있습니다.

 

아래는 nn.Identity를 사용하여 입력값을 그대로 출력하는 간단한 예제 코드입니다:

import torch
import torch.nn as nn

class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.identity = nn.Identity()
    
    def forward(self, x):
        x = self.identity(x)
        return x

# 입력값을 그대로 출력하는 모델 생성
model = MyModel()

# 입력값 정의
input = torch.randn(1, 3, 224, 224)

# 모델에 입력값을 전달하여 출력값 얻기
output = model(input)
print(output)

 

 

Linear vs LazyLinear

 

  Linear 모듈은 입력값과 가중치의 행렬곱을 계산하고, 편향을 더하여 출력값을 계산합니다. 이 때, Linear 모듈은 객체 생성 시 가중치와 편향을 초기화합니다. 즉, Linear 모듈은 객체 생성 시 모든 가중치를 메모리에 할당하고 초기화하므로, 모델의 파라미터 개수가 많을 경우 메모리 사용량이 크게 증가할 수 있습니다.

 

반면, LazyLinear 모듈은 객체 생성 시 가중치를 초기화하지 않습니다. 대신, forward 메서드가 호출될 때까지 가중치 초기화를 늦춥니다. 이를 통해 메모리 사용량을 줄일 수 있습니다. LazyLinear는 대규모 모델에서 특히 유용하며, 특히 비트레인드 언어 모델(Bit-Parallel Language Model)과 같이 메모리 사용량이 많은 모델에 적합합니다.

'AI > Pytorch' 카테고리의 다른 글

모듈 분석,Docstring,repr  (0) 2023.03.16
Custom Model, Conatiner, Module  (0) 2023.03.16
PyTorch Document 1  (0) 2023.03.14
Pytorch basic  (0) 2023.03.13
PyTorch 개요  (0) 2023.03.12
  1. torch.linalg
  2. torch.nn
  3. nn.identity
  4. Linear vs LazyLinear
'AI/Pytorch' 카테고리의 다른 글
  • 모듈 분석,Docstring,repr
  • Custom Model, Conatiner, Module
  • PyTorch Document 1
  • Pytorch basic
LTSGOD
LTSGOD
LTSGOD
TS's log
LTSGOD
전체
오늘
어제
  • 분류 전체보기 (138)
    • 언어 공부 (18)
      • C++ (6)
      • Python (12)
    • AI (39)
      • Numpy (2)
      • Pandas (5)
      • Pytorch (11)
      • Deep Learning (9)
      • CV (11)
      • 과제에서 얻은 것 (1)
    • 수학 (17)
      • 확률론 (8)
      • AI Math (9)
    • Spring (24)
      • 스프링입문 (8)
      • 스프링 원리 - 기본편 (5)
      • 스프링부트와 AWS로 혼자구현하는 웹 서비스 (10)
      • JPA (1)
      • spring MVC (0)
    • CS 기본 (25)
      • 네트워크 (5)
      • OS (4)
      • 자료구조 (9)
      • DB (7)
    • Git (2)
    • 백준 (1)
    • 활동 (8)
      • 2023 겨울 (1)
      • 네이버 부스트캠프 AI Tech (7)
    • HTML,CSS (2)
    • 도커 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOOSTCAMP
  • 부스트캠프
  • 백준
  • 회고
  • 후기
  • Camper
  • AWS
  • pytorch
  • 5기
  • 붓캠
  • AI
  • AI Tech 5기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
LTSGOD
PyTorch Document 2
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.