일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터입수
- 3d데이터
- 그리드분할
- MESH
- 패치분할
- 폴더조사
- 3d
- 이미지빌드
- 컨테이너
- graph
- 도커
- GIS
- GNN
- osmnx
- 지하철역좌표
- geojson
- 알고리즘
- geopandas
- docker
- STL
- 도커 레이어
- 좌표거리
- Python
- python최단거리
- Set
- GCN
- 파이썬
- pyvista
- 동명이인찾기
- 귀여운고래
- Today
- Total
목록Data Science (29)
이것저것 기록
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0EjzJ/btqKOCaaBuR/Dw3OAwNwoj1d4i69BYapqK/img.png)
PyTorch로 신경망 모델을 설계할 때, 크게 다음과 같은 세 가지 스텝을 따르면 된다. Design your model using class with Variables Construct loss and optim Train cycle (forward, backward, update) 여기서 두 번째 순서인 로스와 옵티마이저를 설정하는 방법을 포스팅 해보려고 한다. 1. Opimizer 설정 옵티마이저는 PyTorch의 optim 패키지를 사용하여 간단하게 정의할 수 있다. optim 패키지는 다양한 최적화 알고리즘을 초합하고 있으니까 참고하면 된다. pytorch.org/docs/stable/optim.html torch.optim — PyTorch 1.6.0 documentation torch.op..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bySNc6/btqKLEmaOoa/nIR69JcKMpNObAxx9rwB81/img.png)
PyTorch로 신경망 모델을 설계할 때, 크게 다음과 같은 세 가지 스텝을 따르면 된다. Design your model using class with Variables Construct loss and optim Train cycle (forward, backward, update) 이 포스팅에선 첫번째 단계인 클래스와 변수를 정의하는 방법을 다루려고 한다. PyTorch로 신경망을 설계할 때크게 두 가지 방법이 있다. 사용자 정의 nn 모듈 nn.Module을 상속한 클래스 이용 어느 방식으로 신경망을 설계해도 상관 없지만, 복잡한 신경망을 직접 설계할 때는 내 마음대로 정의하는 방식의 nn모듈을 더 많이 사용한다고 한다. (참고: tutorials.pytorch.kr/beginner/pytorch..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cFJbSc/btqKROAFHZM/KkVkLllQLz3FFl7UpP5Zt0/img.png)
PyTorch에는 Autograd라는 기특한 패키지가 있다. 깃헙에서 딥러닝 코드들을 보다보면 .requires_grad=True 라는 코드를 엄청 자주 보게 되는데, 이게 바로 Autograd라는 패키지와 연관이 있는 코드이다. 이 패키지는 Tensor의 모든 연산에 대해 자동 미분을 제공한다. torch.Tensor는 패키지에서 가장 중심이 되는 클래스이다. 텐서의 속성 중 하나인 .requires_grad=True로 세팅하면 텐서의 모든 연산에 대해 추적을 시작한다. 계산 작업이 모두 수행되면 .backward()를 호출해서 모든 gradients를 자동으로 계산할 수 있다. gradients들은 .grad 속성에 누적되어 저장된다. Autograd 패키지의 동작 원리를 자세히 이해하고 싶으면 다음..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nbstR/btqKxREWIv3/5Vrbo9pVqWlShGWMCDBHT0/img.jpg)
1. 브로드캐스팅 두 행렬 A, B가 있을 때, 원래는 두 행렬의 크기가 같아야지만 덧셈/뺄셈을 수행할 수가 있다. 그리고 두 행렬의 곱셈을 할 때는 (A x B) A의 마지막 차원과 B의 마지막 차원이 일치해야한다. 이를 위해 파이토치에서는 브로드캐스팅 이라는 기능을 제공한다. 브로드캐스팅 기능은 서로 크기가 다른 행렬들이 사칙연산을 수행할 수 있도록 자동으로 크기를 맞춰서 연산을 수행하게 해준다. import numpy as np import torch # Case 1 : 같은 크기의 행렬 m1 = torch.FloatTensor([[3, 3]]) m2 = torch.FloatTensor([[2, 2]]) print(f'shape: m1 = {m1.shape}, m2 = {m2.shape}') m3 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sen37/btqKvQsId2B/KQ3tS0y2ZGvfm7eJkW8NJ0/img.png)
파이토치의 reshape()과 view()는 둘 다 텐서의 모양을 변경하는 데에 사용될 수 있다. 그러나 둘 사이에 약간의 차이가 존재한다. - reshape(): reshape은 가능하면 input의 view를 반환하고, 안되면 contiguous한 tensor로 copy하고 view를 반환한다. - view(): view는 기존의 데이터와 같은 메모리 공간을 공유하며 stride 크기만 변경하여 보여주기만 다르게 한다. 그래서 contigious해야만 동작하며, 아닌 경우 에러가 발생함. 출처: subinium.github.io/pytorch-Tensor-Variable/ 바로 연습! import numpy as np import torch t = np.zeros((4,4,3)) #0으로 채워진 4x..