본문 바로가기

AI Codes/PyTorch15

ML와 DL에서의 seed 고정 난수 생성, Random Number Generation (RNG)에 쓰이는 seed 시드를 고정한다. 시드를 고정하면 랜덤 넘버가 생성되는 패턴이 고정되고 재현성이 생긴다. 다음의 패키지에 대해서 적용하면 되는듯 하다. randomnumpysklearntorchtorch.cudaLLM의 경우 multi-gpu 사용시 모든 GPU들에 대한 시드 고려 필요 # Fix the Seeddef set_seed(seed: int = 42): """ PyTorch, NumPy, Python Random, CUDA의 모든 시드를 고정하는 함수 Args: seed (int): 고정할 시드값 (기본값: 42) """ # Python Random 시드 고정 random.. 2025. 1. 2.
PyTorch repeat, repeat_interleave, expand 차이 PyTorch의 repeat와 repeat_interleave와 expand의 주요 차이점을 설명한다.1. torch.repeat:1차원 텐서 x = torch.tensor([1, 2, 3])result = x.repeat(3)>> tensor([1, 2, 3, 1, 2, 3, 1, 2, 3]) 2차원 텐서 x = torch.tensor([[1, 2, 3], [4, 5, 6]])x.repeat(2, 1)>> tensor([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]) 이때 repeat 안에 들어가는 숫자는 복사하고자 하는 텐서의 차원이 같아야 한다. 2차원 텐서에 대해서 아래와 같이 입력하면 에러.. 2024. 11. 1.
ResNet (2016) PyTorch Implementation ResNet을 Pytorch를 활용하여 구현하고자 한다.https://arsetstudium.tistory.com/45에서 공부한 내용을 토대로 구현보면 아래와 같다. ResNet 구조는 여러가지인데 18, 34, 50, 101, 152 layers다. VGGNet처럼 ResNet도 블록 단위로 구분할 수 있다.블록단위로 구현하고 또 다양한 수의 레이어를 적용할 수 있도록 작성하고자 한다. 우선 Block을 만들기 위한 Sub-block 코드다.  Table 1에서 conv2 block에서 개별 conv2_x를 만드는 코드다. # Sub-block for 18, 34 layersclass ResNetTwoSubBlock(nn.Module): def __init__(self.. 2024. 4. 24.
SPPNet(2014) PyTorch Implementation SPPNet을 Pytorch를 활용하여 구현하고자 한다. https://arsetstudium.tistory.com/35에서 공부한 내용을 토대로 구현보면 아래와 같다. SPPNet은 R-CNN처럼 Spatial Pyramid Pooling을 제외하고 CNN 구조 자체는 기존과 동일하므로 이는 생략한다. SPP는 max pool 또는 average pool이며 중요한 사항은 바로 window와 stride의 사이즈다. 개별 SPP를 우선 구현한다. import torch import torch.nn as nn import math class PyramidPoolCell(nn.Module): # a is the size of feature map # n is the bin size of pyramid po.. 2024. 4. 12.
R-CNN (2014) PyTorch Implementation R-CNN을 Pytorch를 활용하여 구현하고자 한다. https://arsetstudium.tistory.com/33에서 공부한 내용을 토대로 구현보면 아래와 같다. 이때, R-CNN의 CNN 구조는 AlexNet과 같으므로 생략하고 기존의 classification과 다른 부분에 집중하고자 한다. 바로 bounding box의 생성 부분인데 우선 ROI (Region of Interest)라는 개념도 알아야 한다. ROI는 이름 그대로 어떤 이미지에서 관심이 가는 특정 대상에 대한 영역을 의미한다. Object detection에서 ROI 지정은 bounding box로 하며, 아래의 Figure 1를 예시로 알아보자. 우선 interest는 새다. 그리고 그 새에 대한 영역인 ROI를 빨간색 bou.. 2024. 4. 8.
GoogLeNet = Inception v1 (2014) PyTorch Implementation GoogLeNet = Inception v1을 Pytorch를 활용하여 구현하고자 한다.https://arsetstudium.tistory.com/31에서 공부한 내용을 토대로 구현보면 아래와 같다. Inception Block 전체 GoogLeNet 모델을 구축하기에 앞서서 내부의 inception block을 먼저 구현하고자 한다. 맨 처음에는 쉽게 구축하기 위해서, 추상적으로 arguments를 짜기 보다는 구체적인 숫자를 이용해서 구현한다.우선 가장 첫 번째 inception block인 inception 3a를 대상으로 짜본다.자세한 파라미터의 설정은 아래의 Table 1을 참고하면 된다. Inception 3a의 input size는 28 x 28 x 192다. 이때 192는 채널의 개수.. 2024. 4. 3.