본문 바로가기
Python 인공지능 프레임워크/PyTorch 2.3

[pytorch] PyTorch 주요 기능별 클래스 및 함수

by cogito21_python 2024. 7. 3.
반응형

1. 텐서(Tensors)

  • 클래스:
    • torch.Tensor: 모든 텐서 연산의 기본 클래스입니다.
  • 함수:
    • torch.tensor(data): 데이터로부터 텐서를 생성합니다.
    • torch.zeros(size), torch.ones(size), torch.rand(size), torch.randn(size): 특정 크기의 텐서를 생성합니다.
    • torch.arange(start, end, step), torch.linspace(start, end, steps): 특정 범위의 값들로 텐서를 생성합니다.

2. 자동 미분(Autograd)

  • 클래스:
    • torch.autograd.Variable: 텐서와 거의 동일하지만, 자동 미분 기능을 추가로 제공합니다.
    • torch.autograd.Function: 사용자 정의 autograd 함수들을 생성할 수 있습니다.
  • 함수:
    • torch.autograd.grad(outputs, inputs): 주어진 출력에 대한 입력의 기울기를 계산합니다.
    • torch.autograd.backward(tensor): 역전파를 수행하여 기울기를 계산합니다.
    • torch.autograd.no_grad(): 그래디언트 계산을 비활성화합니다.

3. 신경망(Neural Networks)

  • 클래스:
    • torch.nn.Module: 모든 신경망 모델의 기본 클래스입니다.
    • torch.nn.Linear: 선형 변환을 수행하는 완전 연결층입니다.
    • torch.nn.Conv2d: 2D 컨볼루션 층입니다.
    • torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU: 순환 신경망 (RNN) 층들입니다.
  • 함수:
    • torch.nn.functional.relu(x), torch.nn.functional.sigmoid(x), torch.nn.functional.tanh(x): 활성화 함수들입니다.
    • torch.nn.functional.cross_entropy(input, target), torch.nn.functional.mse_loss(input, target): 손실 함수들입니다.

4. 최적화(Optimization)

  • 클래스:
    • torch.optim.Optimizer: 모든 최적화 알고리즘의 기본 클래스입니다.
    • torch.optim.SGD: 확률적 경사 하강법(SGD) 옵티마이저입니다.
    • torch.optim.Adam: Adam 옵티마이저입니다.
  • 함수:
    • optimizer.step(): 매개변수를 갱신합니다.
    • optimizer.zero_grad(): 기울기를 0으로 설정합니다.

5. 데이터 로딩 및 전처리(Data Loading and Preprocessing)

  • 클래스:
    • torch.utils.data.Dataset: 데이터셋을 나타내는 추상 클래스입니다.
    • torch.utils.data.DataLoader: 데이터셋을 배치 단위로 로딩하는 유틸리티입니다.
    • torchvision.datasets: 여러 유명한 데이터셋을 쉽게 로딩할 수 있는 클래스들입니다.
    • torchvision.transforms: 데이터 변환을 위한 다양한 유틸리티 클래스들입니다.
  • 함수:
    • torch.utils.data.random_split(dataset, lengths): 데이터셋을 랜덤하게 분할합니다.

6. 분산 학습(Distributed Training)

  • 클래스:
    • torch.nn.parallel.DistributedDataParallel: 분산 데이터 병렬 학습을 위한 클래스입니다.
  • 함수:
    • torch.distributed.init_process_group(backend, init_method, world_size, rank): 분산 학습 프로세스를 초기화합니다.
    • torch.distributed.barrier(): 모든 프로세스가 동기화될 때까지 기다립니다.

7. 양자화(Quantization)

  • 클래스:
    • torch.quantization.QuantStub, torch.quantization.DeQuantStub: 양자화 및 비양자화 연산을 수행합니다.
    • torch.quantization.FakeQuantize: 학습 중에 양자화 효과를 시뮬레이션합니다.
    • torch.quantization.QConfig: 양자화 설정을 정의합니다.
  • 함수:
    • torch.quantization.convert(model): 훈련된 모델을 양자화합니다.
    • torch.quantization.prepare(model): 양자화를 위한 모델 준비 작업을 수행합니다.

8. 프로파일링(Profiling)

  • 클래스:
    • torch.profiler.profile: 코드 블록을 프로파일링하는 데 사용되는 컨텍스트 관리자입니다.
  • 함수:
    • torch.profiler.tensorboard_trace_handler(log_dir): TensorBoard와 통합하여 프로파일링 결과를 시각화합니다.

9. JIT 컴파일 및 TorchScript

  • 클래스:
    • torch.jit.ScriptModule: 스크립트 모듈을 정의합니다.
  • 함수:
    • torch.jit.script(func): Python 함수를 TorchScript로 변환합니다.
    • torch.jit.trace(func, example_inputs): 주어진 입력을 사용하여 함수를 추적합니다.
    • torch.jit.save(module, filename), torch.jit.load(filename): 모델을 저장하고 로드합니다.

10. 기타 유틸리티

  • 함수:
    • torch.save(obj, f): 객체를 파일에 저장합니다.
    • torch.load(f): 파일로부터 객체를 로드합니다.
    • torch.cuda.is_available(): CUDA 가용성을 확인합니다.
    • torch.cuda.empty_cache(): CUDA 캐시를 비웁니다.

 

반응형

'Python 인공지능 프레임워크 > PyTorch 2.3' 카테고리의 다른 글

[pytorch] 프로젝트 구조 원칙  (0) 2024.07.03
[pytorch] 버전별 특징  (0) 2024.07.03