인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

DachshundMango님의 프로필 이미지

작성한 질문수

처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]

3d 텐서에서의 축 구분 질문

작성

·

49

0

 

import torch

data1 = torch.DoubleTensor([ 
    [[1, 2, 3], 
    [4, 5, 6]],
    [[7, 8, 9], 
    [10, 11, 12]]
])
print (data1.shape, "높이(k):", data1.size(0), "너비(n):", data1.size(1), "깊이(m):", data1.size(2))

위와 같이 예제 코드를 보다 의문이 들어 문의 남깁니다.

기존에 배웠던 넘파이 데이터 구조에서와 마찬가지로 생각했는데,

여기 텐서에서도 순서가 깊이(depth) - 높이(row) - 너비(column) (2, 2, 3) 순이 아닌지 하여 질문 드립니다.
혹시 제가 오개념을 잡고 있다면, 알려주시면 정말 감사하겠습니다!

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. DachshundMango님, 질문 주셔서 감사합니다.

PyTorch에서는 텐서의 차원(dimension)이 통상적으로 위에서 아래 순서로 작성되어, 반대로 해석될 수 있습니다. 텐서의 차원은 일반적으로 (N, H, W)와 같은 순서로 표현되며, N은 채널의 개수, H는 높이(Height), W는 너비(Width)를 나타냅니다.

따라서, 제공해주신 코드의 텐서 data1은 다음과 같은 연관성을 가집니다:

  • 첫 번째 차원 data1.size(0): 채널의 개수 또는 즉, 배치 차원
  • 두 번째 차원 data1.size(1): 높이(Height)
  • 세 번째 차원 data1.size(2): 너비(Width)

주석에서 언급한 바와 같이 끔, 깊이 - 높이 - 너비의 순서라고 이해하실 수도 있지만, 위 규칙은 다른 컨텍스트와 라이브러리에 따라 다를 수 있으므로, 각각의 라이브러리와 문서화된 내용에 주의를 기울이는 것이 중요합니다.

PyTorch의 공식 문서를 참조하셔서 더욱 깊이 있는 탐구를 하시는 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

DachshundMango님의 프로필 이미지

그러면 어쨌든 3개의 축넘버 나열 시 높이, 너비는 뒤의 숫자 두 개로 보면 되는건가요?