본문 바로가기
728x90
반응형

딥러닝&머신러닝/파이토치 기본 문법12

과적합에 대한 대응방법 몇 가지 과적합 증상 모델 개발을 하다보면 수 없이 과적합을 만나게 됩니다. 학습을 완료한 후에 테스트셋으로 돌려보니 현격하게 성능 차이가 발생한다면 이는 과적합이 발생했다는 것으로 볼 수 있습니다. 과적합이 발생하는 원인이 다르기 때문에 해결방안도 각기 다를 것 같습니다. 오늘은 간략하게 소개만하고 세부적은 방법에 대해서 이어서 작성해야할 예정입니다. 대응 방안 과적합 발생 시 크게 두 가지 방법으로 대응을 할 수 있을 것 같습니다. 하나는 모델에 제약을 가하거나 모델에 변화를 주는 방법이고, 다른 하나는 데이터에 기반하여 해결이 가능할 것 같습니다. 데이터에 기반한 대응 방안 데이터 사이즈 늘리기 (데이터 증강) 얼마나 데이터 사이즈를 늘려야할까라는 질문이 뒤따르지만, 당연하게도 데이터가 사이즈가 늘어나면 과.. 2023. 2. 21.
DataLoader num_workers에 대한 고찰 Pytorch에서 학습 데이터를 읽어오는 용도로 사용되는 DataLoader는 torch 라이브러리를 import만 하면 쉽게 사용할 수 있어서 흔히 공식처럼 잘 쓰고 있습니다. 다음과 같이 같이 사용할 수 있겠네요. from torch.utils.data import DataLoader 상세한 설명이 기술되어 있는 공식 문서는 아래 링크에서 살펴볼 수 있습니다. https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader torch.utils.data — PyTorch 1.13 documentation torch.utils.data At the heart of PyTorch data loading utility is the torch.ut.. 2023. 2. 3.
[파이토치] zero_grad()의 이해 Neural Network에서 parameter들을 업데이트 할때 우리는 zero_grad()를 습관적으로 사용한다. import torch as T import torch,optimizer as optim optimizer = optim.Adam(lr=lr, params=self.parameters()) ... optimizer.zero_grad() loss.backward() optimizer.step() zero_grad()의 의미가 뭔지, 왜 사용하는지 알아보장 TORCH.OPTIM.OPTIMIZER.ZERO_GRAD Optimizer.zero_grad(set_to_none=False)[source] Sets the gradients of all optimized torch.Tensor s to .. 2023. 1. 26.
[Pytorch] torch.view, torch.reshape의 사용법과 차이 비교 파이토치 view 함수와 reshape 함수 비교 안녕하세요. 이번 글에서는 파이토치에서 텐서의 차원 변환을 할 때 사용하는 torch.view와 torch.reshape 함수의 기본적인 사용법과 두 함수의 차이에 대하여 다루어보는 시간을 가져보겠습니다. view와 reshape 함수의 기본적인 사용법을 익혀보기 위하여 아래의 간단한 12개의 원소를 가지는 1차원 텐서가 있다고 가정해보겠습니다. import torch x = torch.arange(12) x # tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) view와 reshape 모두 input으로 원하는 차원의 형태를 바로 적어주시면 사용이 완료됩니다. 이 두 함수의 겉으로 보이는 반환 결과는 동일합니다. x... 2023. 1. 10.
[Pytorch] contiguous 원리와 의미 torch의 contiguous에 대해서 안녕하세요. 이번 시간에는 파이토치에서 메모리 내에서의 자료형 저장 상태로 등장하는 contiguous의 원리와 의미에 대해서 간단히 살펴보도록 하겠습니다. contiguous 여부와 stride 의미 간단한 예시를 들어 설명하기 위해서 shape이 (4, 3)으로 동일한 두 tensor a, b를 다음과 같이 선언해보겠습니다. import torch a = torch.randn(3, 4) a.transpose_(0, 1) b = torch.randn(4, 3) # 두 tensor는 모두 (4, 3) shape print(a) ''' tensor([[-0.7290, 0.7509, 1.1666], [-0.9321, -0.4360, -0.2715], [ 0.1232,.. 2023. 1. 10.
[PyTorch] `model.eval()` 의미 딥러닝 모델의 코드를 살펴보다 보면 Evaluation 부분에서 꼭 이런 코드가 등장한다. def evaluation(model, criterion, ...): model.eval() criterion.eval() ... 무슨 의미인지 궁금해서 찾아보니, nn.Module에서 train time과 eval time에서 수행하는 다른 작업을 수행할 수 있도록 switching 하는 함수라고 한다. stackoverflow train time과 eval time에서 다르게 동작해야 하는 대표적인 예들은 Dropout Layer BatchNorm Layer 등등이 있다고 한다. .eval() 함수는 evaluation 과정에서 사용하지 않아야 하는 layer들을 알아서 off 시키도록 하는 함수인 셈이다. e.. 2023. 1. 10.
[PYTORCH] POINTWISE OPS 파이토치의 공식 문서에 Math operations 부분을 살펴보면 pointwise로 연산을 한다고 한다. pointwise로 연산을 한다는 것은 문자 그대로 함수의 정의역에 있는 각 점마다 연산을 한다는 내용이다. 즉, 특정 속성이 각 값을 고려하여 정의 된다는 것이다. Tensor를 구성하는 각 data에 대해 각각 연산을 적용한다는 뜻이다. 따라서 입력 텐서와 출력 텐서의 차원의 크기는 서로 같다. ▼ pointwise에 대한 수학적 정의 파이토치의 공식문서에서 소개한 Pointwise Ops 중 3개를 예시코드로 함께 알아보려 한다. torch.addcmul torch.exp torch.pow torch.addcmul torch.addcmul은 pointwise로 tensor1에 tensor2를.. 2023. 1. 10.
torch.nn.functional.interpolate torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None) input을 주어진 size또는 scale factor에 맞게 upsampling 또는 downsampling한다. interpolation에 쓰이는 알고리즘은 model에 따라 달라진다. 현재 temporal, spatial, volumetric sampling이 지원되고 있다. 즉 예상되는 input은 3-D, 4-D, 5-D shape이다. input dimension은 mini-batch x channels x [optional depth] x [optional.. 2023. 1. 9.
[PyTorch] Tensor 합치기: cat(), stack() 실험이 돌아가는 동안 심심하니까 하는 포스팅. PyTorch에서 tensor를 합치는 2가지 방법이 있는데 cat과 stack이다. 두가지는 현재 차원의 수를 유지하느냐 확장하느냐의 차이가 있다. 그림과 코드를 통해 사용법을 알아보자. Cat함수란? cat함수는 concatenate를 해주는 함수이고 concatenate하고자 하는 차원을 증가시킨다 (차원의 수는 유지된다). concatenate하고자하는 차원을 지정해주면 그 차원으로 두 tensor의 차원을 더한 값으로 차원이 변경된다. concatenate하고자하는 dimension을 지정해주지 않으면 default=0으로 설정된다. Cat함수의 시각화 Python 코드 import torch batch_size, N, K = 3, 10, 256 x.. 2023. 1. 9.
[Pytorch] squeeze와 unsqueeze 함수 사용법 정리 torch squeeze vs unsqueeze 이번 글에서는 파이토치에서 squeeze와 unsqueeze 함수의 용도와 사용 예시에 대해서 살펴보도록 하겠습니다. 이 글은 파이토치의 squeeze, unsqueeze 함수에 대한 공식 문서를 바탕으로 작성되었습니다. Pytorch squeeze 함수 사용 방법 torch squeeze 함수의 원리는 (A x B x 1 x C x 1) 형태의 텐서에서 차원이 1인 부분을 제거하여 (A x B x C) 형태로 만들어 주는 것입니다. 또한, 원하는 dimension 위치를 따로 선택하면, 해당 위치의 1만 삭제가 가능합니다. 단, 해당 차원 위치의 size가 1이 아니라면, 삭제가 불가능합니다. import torch # (A, B, 1, C, 1) 차원 .. 2023. 1. 9.
728x90
반응형