Deep Learning(33)
-
[Pytorch] Initializer (torch.nn.init)
torch.nn.init의 간단한 initializer들을 살펴보겠다 xavier같은 초기화기법들은 따로 다루기 1. torch.nn.init.normal_(tensor, mean=0.0, std=1.0) input tensor을 N(mean, std^2)의 normal distribution(정규분포)에 따라 초기화 2. torch.nn.init.uniform_(tensor, a=0.0, b=1.0) input tensor을 U(a, b)의 uniform distribution에 따라 초기화 * uniform distribution ? [a, b]의 범위에서 모든 값의 확률이 동일한 분포 3. torch.nn.init.constant_(tensor, val) input tensor를 특정 값 val로 ..
2021.06.15 -
stochastic function(확률함수)
CycleGAN - G와 F는 stochastic function이어야 한다고 한다. stochastic function, 확률함수란 무엇일까 간단히 살펴보자 확률 변수? 무작위 실험 겨로가 특정 확률로 발생하는 각각의 결과를 수치적 값으로 표현하는 변수. 예를 들어 동전 던지기 실험을 한다면 앞을 1, 뒤를 0으로 지정하였을 때 이를 확률변수라고 한다. 확률 분포? 확률 변수의 모든 값과 그에 대응하는 확률들이 어떻게 분포하는지를 나타냄. 예를 들어 동전을 2번 던져 앞이 나오는 확률 변수를 X라고 한다면 X 0 1 2 P(X) 1/4 1/2 1/4 이것이 확률분포. 확률 함수? 이렇게 확률 변수에 의해 정의된 실수를 0~1사이의 확률로 대응시키는 함수 이렇게 정리할 수 있겠다.
2021.06.08 -
[Pytorch] Tensor 의 .view()메소드 / .reshape()메소드
tensor의 shape를 변경해줌 view는 기존의 데이터와 같은 메모리 공간을 공유하며 stride 크기만 변경하여 보여주기만 다르게 합니다. 그래서 contigious해야만 동작하며, 아닌 경우 에러가 발생합니다. reshape은 가능하면 input의 view를 반환하고, 안되면 contiguous한 tensor로 copy하고 view를 반환합니다. view는 메모리가 기존 Tensor와 동일한 메모리를 공유하는게 보장되지만 reshape은 그렇지 않습니다. 안전하게 형태만 바꾸고 싶다 reshape 메모리가 공유되어 업데이트에 대한 보장이 이뤄진다 view (단 continguous하지 않은 경우 에러 발생 가능) >>> x = torch.randn(4, 4) >>> x.size() # torch..
2021.05.24 -
[Pytorch] torch.sort
torch.sort(input, dim=-1, descending=False, stable=False, *, out=None) -> (Tensor, LongTensor) input (Tensor) – the input tensor. dim (int, optional) – sort할 차원 descending (bool, optional) – 내림차순/올림차순 여부 stable (bool, optional) – sorting routine을 안정적으로 만들어 equivalent의 순서가 유지되도록 보장합니다. stable=True only works on the CPU for now. 일반 Python list의 sort와 달리 바뀐 인덱스를 담고 있는 텐서를 반환해주기 때문에, 아주 유용하게 쓸 수 있다
2021.05.22 -
[Pytorch] torch.no_grad
기록을 추적하는 것(과 메모리를 사용하는 것)을 방지하기 위해, 코드 블럭을 with torch.no_grad(): 로 감쌀 수 있음. https://pytorch.org/docs/stable/generated/torch.no_grad.html no_grad — PyTorch 1.8.1 documentation Shortcuts pytorch.org gradient 계산이 되지 않게 하는 Context-manager gradient calculation을 금지하는 것은 inference에서 유용 (Tensor.backward()를 호출하지 않는다는 가정하에) 이 context 내부에서 새로 생성된 tensor들은 requires_grad = False상태가 됨 메모리 사용량을 아껴줌 thread loca..
2021.05.22 -
L1, L2 Norm/Regularization
Norm [선형대수학] 벡터의 크기(magnitude) 또는 길이(length)를 측정하는 방법 (주의) 차원 != 길이 L1, L2 Norm 이 식에서 p=1이면 L1 Norm, p=2이면 L2 Norm s.sum(dim=1, keepdim=True) # L1 s.pow(2).sum(dim=1, keepdim=True).sqrt() # L2 L1 Norm L1 Norm 은 벡터 p, q 의 각 원소들의 차이의 절대값의 합 L2 Norm L2 Norm 은 벡터 p, q 의 유클리디안 거리(직선 거리) 위 식은 p = (x_1, x_2, ... , x_n), q = (0, 0, ... , 0) 일 때라고 할 수 있음. 검정색 두 점사이의 L1 Norm : 빨간색, 파란색, 노란색 L2 Norm: 초록색 L..
2021.05.22