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 |
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 |