Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DilatedNet
- Recsys-KR
- 알고리즘
- MySQL
- Segmentation
- 엘리스
- 협업필터링
- 프로그래머스
- Machine Learning Advanced
- 3줄 논문
- eda
- Semantic Segmentation
- 파이썬
- Python
- 큐
- 나는리뷰어다
- TEAM EDA
- 나는 리뷰어다
- pytorch
- DFS
- 튜토리얼
- 스택
- 코딩테스트
- Image Segmentation
- Object Detection
- 한빛미디어
- TEAM-EDA
- hackerrank
- 입문
- 추천시스템
Archives
- Today
- Total
TEAM EDA
[파이토치로 시작하는 딥러닝 기초] 1.1 Tensor Manipulation 본문
이번 글에서는 PyTorch의 기본적인 연산 법에 대해서 배워보도록 하겠습니다. 이번 글은 EDWITH에서 진행하는 파이토치로 시작하는 딥러닝 기초를 토대로 작성하였습니다.
목차
- Vector, Matrix and Tensor
- NumPy Review
- PyTorch Tensor Allocation
- Matrix Multiplication
- Other Basic Ops
1. Vector, Matrix and Tensor
- 스칼라(scala) : 차원이 없는 값
- 벡터(vector) : 1차원으로 이루어진 값(1D)
- 행렬(matrix) : 2차원으로 이루어진 값(2D)
- 텐서(tensor) : 3차원으로 이루어진 값(3D)
Tensor의 Shape를 계산할 수 있는 것이 중요함.
- 2D : (batch size, dim)
- 3D : (batch size, width, height) - computer vision , (batch size, length, dim) - Language
2. Numpy Review
3. PyTorch Tensor Allocation
3.1 Broadcasting
- Matrix간의 연산 시에 크기가 작은 행렬을 크기가 큰 행렬과 크기가 맞도록 조정해주는 작업
- 자동적으로 이루어지기에 사용 시에 매우 주의해야 함
3.2.1 Vector + Scalar
- m2의 [3]이 -> [[3, 3]]으로 수정
3.2.2 Vector + Vector
- m1의 [[1, 2]]가 [[1, 2], [1, 2]]으로 수정
- m2의 [[3], [4]]가 [[3, 3], [4, 4]]으로 수정
4. Multiplication vs Matrix Multiplication
- matmul : 내적
- * 혹은 mul : 원소 곱 (Broadcasting을 통해서 자동적으로 계산됨 )
5. Other Basic Ops
- Mean
- Sum
- Max and Argmax
5.1 Mean
- FloatTensor에서는 mean이 가능하지만 Long에 대해서는 불가능함
- dim을 통해서 해당 방향을 없앨 수 있음
- 예) dim이 0인 경우에 대해서 (2 x 2) -> (1 x 2)이 되고 이렇게 계산이 되려면 같은 col끼리 평균이 매겨져야 함
5.2 Sum
5.3 Max and Argmax
- Max : 최댓값을 추출
- Argmax : 최댓값의 index를 추출
- max()[1]으로 계산
5.4 View (Reshape)
- 차원의 크기를 바꿔주는 함수
(2, 2, 3) -> (2 x 2, 3) = (4, 3)으로 변경 됨. -1의 경우 shape를 지정해주지 않고 앞의 값들을 곱하라는 의미임
(2, 2, 3) -> (2 x 2, 1, 3) = (4, 1, 3)으로 변경됨.
5.5 Squeeze
- view 함수를 사용한 것과 비슷하지만 Squeeze는 dim의 Element의 갯수가 1인 경우를 없애줌
- 아래의 예시에서는 [3, 1]에서 1이 사라지는 역할
- Squeeze(dim = ?)을 통해서? 의 dimension이 1을 가지면 지우고 아니면 내버려둠
5.6 Unsqueeze
- Squeeze의 반대로 내가 원하는 dim에 1을 넣어주는 역할을 함
- view에서도 똑같이 구현할 수 있음
5.7 Type Casting
- tensor의 type을 변경해주는 함수
5.8 Concatenate
- 두 개의 tensor를 결합
- dim이 0 : 위아래로 결합
- dim이 1 : 옆으로 결합
5.9 Stacking
- 여러 개의여러 개의 tensor를 결합
- dim이 0 : 위아래로 결합
- dim이 1 : 옆으로 결합
5.10 Ones and Zeros
- ones_like : 똑같은 크기의 tensor를 1로 채워서 반환
- zeros_like : 똑같은 크기의 tensor를 0으로 채워서 반환
- 같은 device간의 tensor 계산을 용이하게 해 주고 Multiple gpu 간의 연산도 용이
5.11 In-place Operation
- _가 붙게되어서 memory를 새로 선언하지 않고 기존의 tensor에 넣어라
'EDA Study > PyTorch' 카테고리의 다른 글
[파이토치로 시작하는 딥러닝 기초] 2.1~2 Perceptron, Multi Layer Perceptron (0) | 2020.03.20 |
---|---|
[파이토치로 시작하는 딥러닝 기초] 1.6 Softmax Classification (0) | 2020.03.20 |
[파이토치로 시작하는 딥러닝 기초] 1.5 Logistic Regression (1) | 2020.03.20 |
[파이토치로 시작하는 딥러닝 기초] 1.4.2 Loading Data (0) | 2020.03.19 |
[파이토치로 시작하는 딥러닝 기초] 1.2~4 Linear Regression (0) | 2020.03.19 |