squeeze의 역할은 텐서에서 차원의 크기가 1인 차원을 제거한다는 것이다. 그러면 차원의 크기가 1인 애들을 왜 제거하는 것일까?
1. 차원축소: 차원이 1인 경우, 해당 차원은 단 하나의 요소를 가지기 때문에 정보적으로 불필요하다. 따라서 차원을 제거함으로써 텐서의 크기를 줄이고 메모리 사용을 줄일 수 있다.
그렿다면 왜 단 하나의 요소만을 가지면 정보적으로 불필요한 것일까?
이 이미지를 보면 이해가 된다. [ [ [1,2] , [3,4] ] ] 은 3차원 텐서로 텐서의 shape은 (1,2,2)이다. 이때 squeeze가 크기가 1인 차원을 없앤다는 것이다. 그래서 squeeze를 하고 나면 [ [1,2], [3,4] ]가 되면서 2차원의 텐서가 되며 (2,2) shape을 가지게 된다. 이때 크기가 1인 차원은 이미지에서 볼 수 있듯이 정보적으로 불필요함을 볼 수 있다. 그저 하나의 괄호 쌍이 추가되어 있는 것일 뿐, 정보적으로는 아무 영향을 끼치지 않으니까!
그 외에 다른 역할로는 아래와 같은 것들이 있다.
2. 텐서 연산 호환성: 일부 연산이나 라이브러리는 차원이 1인 텐서를 처리할 수 없거나 예상한 차원 구조를 유지하기 위해 차원이 1인 텐서를 제거함. `squeeze` 작업을 통해 텐서를 차원 축소시킴으로써 다른 연산이나 라이브러리와의 호환성을 확보 가능.
3. 배열의 모양 일관성: 차원이 1인 텐서를 제거함으로써 배열의 모양을 조정하여 일관성을 유지할 수 있음. 예를 들어, 여러 텐서를 쌓아 새로운 차원을 생성한 후 차원이 1인 텐서를 제거하면 쌓인 텐서들의 모양이 일관되게 유지된다.
배움을 기록하기 위한 공간입니다.
수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D
'배움 기록 > Programming' 카테고리의 다른 글
csv파일을 엑셀에서 세미콜론으로 분리해서 보기 (데이터 변형 없이!) (1) | 2024.01.11 |
---|---|
GitHub Copilot이란? 학생 무료 계정 사용법 !! (0) | 2023.09.27 |
[python] Dataclasses 모듈은 무엇인가 , 장점은? (feat. **kwargs) (0) | 2023.04.04 |
[python] argparse 사용법, verbose 란 ? (0) | 2023.04.03 |
[python, pathlib, glob] 특정 directory (경로) 추출하기 (0) | 2023.03.29 |