본문 바로가기
728x90
반응형

분류 전체보기100

[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.
[Python] 정적 메소드 staticmethod, classmethod 파이썬 클래스의 코드들을 보면 종종 메서드 위에 데코레이터로 다음과 같은 것들이 붙어있을 때가 있다. @staticmethod @classmethod 오늘은 파이썬의 정적 메서드를 만드는 방법인 staticmethod, classmethod에 대해서 알아보도록 하자 본격적인 글에 앞서서 정적메서드(static method)란 무엇일까? 정적 메서드는 클래스가 생성되지 않아도 즉 인스턴스 없이도 사용할 수 있는 함수로 인스턴스에서는 호출 할 수 없는 함수를 가리킨다. 1. staticmethod staticmethod는 메서드를 정적 메소드로 바꿔주는 것으로 데코레이터를 이용해 바꿔준다. 일반적으로 메서드에는 맨 앞의 argument로 self를 넣어주지만 staticmethod에는 넣어주지 않는다. cl.. 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.
티스토리 블로그 구글 검색에 노출시키는 방법 - 구글 서치 콘솔 연동하기 티스토리 블로그를 운영하면서 작성한 포스팅을 구글 검색에 노출시켜 트래픽을 발생시키려면 구글 서치 콘솔에 자신의 사이트를 등록해야 합니다. 티스토리는 구글과 협업으로 다양한 플러그인을 제공하고 있으니 어렵지 않게 등록할 수 있습니다. 구글 서치 콘솔 연동하기 구글 서치 콘솔(Google Search Console)은 웹 사이트 검색 관리 도구입니다. 구글에 자신의 웹 사이트가 검색이 될 수 있도록 등록, 수정할 수 있고 검색과 관련된 통계를 확인할 수 있습니다. RSS와 사이트 맵을 등록하기 위해서는 구글 서치 콘솔을 연동해야 합니다. 티스토리 블로그를 구글 서치 콘솔에 등록하려면 소유권 확인을 진행해야 합니다. 이때 메타태그를 본인의 티스토리 사이트 HTML에 등록하거나 티스토리 플러그인을 사용해 등록.. 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.
파이토치 nn 모듈 파이토치에는 torch.nn이라는 모든 신경망 아키텍처를 만들 수 있는 빌딩 블럭이 있는 전용 서브모듈이 있다. 파이토치에서는 빌딩 블럭을 모듈(module)이라 부든다.(다른 프레임워크에서는 계층(layer)이라고 일컫는다.) 파이토치 모듈은 nn.Module 베이스 클래스에서 파생된 파이썬 클래쓰다. 모듈은 하나 이상의 Parameter 객체를 인자로 받고, 텐서타입이며 훈련 과정을 통해 값이 최적화된다. 참고 서브 모듈은 list난 dict 객체에 들어간 형태가 아닌 최상위 레벨 속성이어야 한다! 그렇지 않으면 옵티마이저가 서브 모듈(파라미터)을 찾지 못한다. 모델이 리스트나 딕셔너리 형태의 서브 모듈을 요구하는 경우에 대응할 목적으로 nn.ModuleList와 nn.ModuleDict를 파이토치에.. 2023. 1. 9.
[Pytorch] hook (forward_hook, backward_hook) Hook 패키지 중간에 자기가 원하는 코드 끼워넣을 수 있는 부분 정도로 이해하면 될 듯하다! (register hook) hook: 일반적으로 hook은 프로그램, 혹은 특정 함수 실행 후에 걸어놓는 경우를 일컬음. pre-hook: 프로그램 실행 전에 걸어놓는 hook forward hook register_forward_hook: forward 호출 후에 forward output 계산 후 걸어두는 hook # register_forward_hook should have the following signature hook(module, input, output) -> None or modified output input은 positional arguments만 담을 수 있으며 (index 같은?) .. 2023. 1. 9.
728x90
반응형