티스토리 뷰
pytorch tensor를 이용하다보면, a,b,c tensor를 하나로 합치는 경우가 필요하다.
그때 사용하는 것은 concat, stack 함수를 이용해서 사용하면 될텐데... 조금의 차이가 존재한다.
예시를 통해 정리해보고자 한다.
1. concat
- pandas를 자주 사용하는 개발자들은 pd.concat을 종종 사용할 것이다. 이때 concat이 torch에도 같다고 생각하면 된다.
한마디로 정리하자면, concat은 기존 shape을 유지한다.
예제를 보자.
x = [[1,2], [3,4]] / y = [[4,5],[6,7]] 를 선언하였다.
shape은 (2,2) 이다. shape을 잘 기억하길 바란다.
단순 concat을 진행하게 되면, defalut = dim 0 이므로 세번째 처럼 나란히 연결되는 것을 볼 수 있다.
shape을 보면.. [4,2] 가 되었다. 즉, shape의 차원은 바뀌지 않았다(2차). 이게 중요하다.
dim = 1은 '열' 끼리 합치라는 뜻이므로 네번째처럼 구성되는 것을 볼 수 있다. 여기서 shape의 차수는 여전히 2차원이다.
concat의 가장 중요한 점은 shape의 차수이다.
다음 stack을 살펴보자.
같은 예제이지만, concat 대신 stack으로 진행하였다.
얼핏보면 결과가 같아보이지만 shape을 잘 살펴보길 바란다.
concat은 2차원 > 2차원으로 고정이였지만, stack은 2차원 > 3차원이 되었다!!!
stack은 차원 수를 늘려 형태를 바꾸지 않고 있는 그대로 concat이 된다.
즉, 데이터를 쌓기위해 저장소가 하나 필요하다고 보면 된다.
그 외 dim의 차이도 보자면, dim 0은 defalut로 행을 기준으로 쌓게 되지만,
dim 1은 열을 기준으로 쌓기때문에 4번째 사진처럼 된다.
dim은 헷갈리니 잘 생각해보길 바란다.
'Pytorch' 카테고리의 다른 글
[pytorch] gpu가 cpu보다 느리거나 같을 때. (0) | 2023.01.09 |
---|---|
[pytorch] LSTM 내부구조 이해하기 (0) | 2023.01.05 |
[pytorch] RNN 이해하기 (0) | 2023.01.04 |
[Pytorch] torch.tensor() Vs torch.Tensor() 차이 (0) | 2022.12.28 |
[pytorch] 파라미터 dim = ?의 의미... (0) | 2022.12.27 |
- Total
- Today
- Yesterday
- GNN
- java
- c3k2
- 뜯어보기
- 도커
- 디텍션
- 티스토리챌린지
- python
- 욜로
- 딥러닝
- 오류
- CNN
- Tree
- 초보자
- 정리
- YOLOv8
- docker
- 오블완
- 백준
- YOLO
- 알고리즘
- 이미지
- 어탠션
- GIT
- github
- yolov11
- DeepLearning
- V11
- 깃
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |