일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Front
- ML
- clean code
- algorithm
- math
- FGVC
- Meta Learning
- SSL
- 알고리즘
- PRML
- dl
- 3d
- pytorch
- computervision
- REACT
- 머신러닝
- 자료구조
- FineGrained
- Python
- web
- GAN
- CV
- Vision
- Depth estimation
- nerf
- cs
- 딥러닝
- nlp
- Torch
- classification
- Today
- Total
목록Torch (4)
KalelPark's LAB
매번 까먹어서, 다시 다듬어보고자 한다. torch.gather란? 공식문서에 따르면 차원에 해 정해진 축에 따라 값을 모읍니다. import torch t = torch.tensor([[1, 2], [3, 4]]) torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]])) 즉, 차원에 따라 값을 재배치한다고 이해하면 됩니다. * 코드로 한번 더 이해해보도록 하겠습니다. out[i][j][k] = input[index[i][j][k]][j][k] out[i][j][k] = input[i][index[j][k]][k] out[i][j][k] = input[i][j][index[k]] // 위의 값처럼 indexing이 처리되는 것을 알 수 있습니다. Example> imp..
Split란? Split의 경우 데이터당 최대 자료구 N개를 가지게 하는 방법입니다. 만약 원하고자 하는 split_size로 나누고자 하지만, 정확한 size로 나누는 것이 불가능하다면, 마지막 size는 작습니다. Chunk란? chunks의 경우 데이터를 n개로 나누는 방법입니다. chunk의 경우 n개의 그룹을 만드는 것이다. * 쉽게 이해하고자 한다면, chunk는 n개의 그룹을 만드는 것이고, split의 경우 n개로 구성된 그룹을 만드는 것이다.
Logsumexp - 지정된 차원 dim으로부터, 입력 텐서의 각 행에 대한 합계 지수 로그를 반환합니다. 이후, 계산은 수치적으로 안정화 됩니다. 사용하는 이유? - 매우 작은 양수나 매우 큰수를 나타내는 한 가지 방법으로는 Log를 활용하는 것이다. 하지만, 덧셈은 약간의 trick이 필요하다. (LogSumExp Trick이 필요합니다.) 두 큰 수 Exp(800) 와 Exp(900)을 더하고자 한다. 문제는, Log에서 덧셈은 곱셈처럼 간단하지 않습니다. (컴퓨터에서 정확하게 나타내는 것이 불가능합니다.) 그리하여, 각각의 큰 2개의 수를 2개의 수 중 최소 값으로 각각의 수를 나누고, 다시 2개의 수를 더한 후 log를 취한 다음, 이전에 나눈 최소 값을 더해주면 된다. - 이러한 방식을 활용하..
torch.nn.Module.register_buffer - parameter가 아니라 buffer를 수행하기 위한 목적으로 활용됩니다. - buffer는 state_dict에 저장되지만, 최적화에 사용되지 않습니다. 즉, 단순한 module이라고 볼 수 있습니다. def register_module(self, name : str, module : Optional["Module"]) -> None: self.add_module(name, module) torch.nn.Module.register_parameter - module에 name을 기반으로 parameter를 추가합니다. - register_buffer와 다르게, 최적화에 사용될 수 있습니다. def register_parameter(self,..