행렬에 배치 축을 더하면 세 축 텐서가 된다
문장 하나의 토큰 표현이 [토큰, 특징] 행렬이라면 여러 문장을 함께 처리할 때 [배치, 토큰, 특징] 배열로 쌓을 수 있다. 텐서는 이런 다차원 수치 배열을 가리킨다. 2×3×4 텐서는 문장 2개, 문장당 토큰 자리 3개, 자리당 특징 4개인 교육용 예시로 읽을 수 있다.
축 수를 텐서의 랭크라고 부르기도 한다. 이 랭크는 행렬의 선형대수학적 랭크와 다른 뜻이다. 혼동을 피하려면 “축 수 3”과 “모양 [2,3,4]”를 함께 쓴다. PyTorch 공식 안내도 텐서의 핵심 속성으로 shape, dtype, device를 제시한다.
모양은 축 이름과 한 쌍으로 기록한다
[2,3,4]만 보면 각 숫자가 무엇을 뜻하는지 알 수 없다. axis0=배치, axis1=토큰, axis2=특징이라고 적는다. 어떤 라이브러리나 함수는 [토큰, 배치, 특징] 순서를 받을 수 있으므로 코드와 그림의 축 순서를 맞춘다. 차원 이름을 생략하면 transpose 뒤에 잘못된 축을 더하거나 평균낼 수 있다.
데이터형도 값 해석에 영향을 준다. 토큰 ID는 정수, 활성값과 가중치는 부동소수점, 마스크는 불 값이나 특별한 수치로 표현할 수 있다. 그림마다 dtype과 device를 모두 크게 표시할 필요는 없지만, 실제 계산을 재현할 기록에는 남긴다.
| 축 | 크기 | 이 예시의 뜻 | 대표 인덱스 |
|---|---|---|---|
| 0 | 2 | 배치의 문장 수 | b |
| 1 | 3 | 문장 안 토큰 자리 | t |
| 2 | 4 | 토큰별 특징 수 | d |
| 전체 | 24 | 저장된 원소 수 | 2×3×4 |
슬라이스는 한 축을 고정해 단면을 꺼낸다
X[0,:,:]는 첫 번째 문장의 모든 토큰과 특징을 꺼내 3×4 행렬로 만든다. X[:,1,:]는 모든 문장의 두 번째 토큰 자리를 꺼내 2×4 행렬로 만든다. X[:,:,2]는 세 번째 특징만 골라 2×3 행렬로 볼 수 있다. 어떤 축을 고정했는지 캡션에 적는다.
단면을 여러 개 나란히 그리면 큰 텐서를 작은 배수로 읽을 수 있다. 배치마다 같은 색 범위를 써야 값 비교가 가능하다. 패딩된 토큰 자리나 마스크된 위치는 실제 토큰과 다른 무늬로 표시한다. 값이 0이라는 사실과 계산에서 제외된다는 규칙을 구분한다.
| 선택 | 고정한 축 | 결과 모양 | 읽는 질문 |
|---|---|---|---|
| X[0,:,:] | 배치 0 | [3,4] | 첫 문장의 전체 표현 |
| X[:,1,:] | 토큰 1 | [2,4] | 두 문장의 같은 자리 |
| X[:,:,2] | 특징 2 | [2,3] | 한 특징의 전체 분포 |
reshape는 값 개수는 보존하지만 이웃 관계를 바꿀 수 있다
2×3×4 텐서에는 원소가 24개 있다. [6,4]로 reshape하면 배치와 토큰 축을 합쳐 6개 위치로 볼 수 있다. 원소 수 24는 보존되지만 “같은 문장” 경계가 평면에서 사라진다. [4,6]도 원소 수는 같지만 축 뜻과 값 순서는 달라질 수 있다.
reshape 전에 어떤 축을 합치거나 나눌지 쓰고, 이후 인덱스가 원래 X[b,t,d]의 어디에서 왔는지 예를 든다. 메모리 배치가 연속인지와 라이브러리 동작도 확인한다. 모양만 같다고 의미가 같아지는 것은 아니다.
transpose는 축 순서를 바꾸며 숫자 내용은 그대로 옮긴다
X의 축이 [배치, 토큰, 특징]일 때 transpose(0,1)는 [토큰, 배치, 특징] 순서로 바꾼다. 같은 값 X[b,t,d]가 새 배열에서는 X′[t,b,d] 위치에 놓인다. 축 순서를 바꾼 뒤 그림 라벨도 함께 바꿔야 한다.
행렬 곱이나 다중 머리 주의 계산에서는 원하는 축을 인접하게 만들기 위해 축을 교환한다. 예를 들어 [B,T,H,Dh]를 [B,H,T,Dh]로 바꿔 머리별 계산을 할 수 있다. H×Dh=D인지는 모델 설정에서 확인한다. 이 네 축 구조는 특정 값 관찰이 아니라 공개 계산 형태를 설명하는 모형이다.
패딩과 마스크는 값 그림과 계산 규칙을 함께 요구한다
길이가 다른 문장을 한 배치에 넣으려면 짧은 문장 뒤에 패딩 토큰 자리를 둘 수 있다. 텐서 모양은 같아지지만 패딩 위치가 실제 문맥처럼 주의 계산에 참여하면 결과가 달라진다. 마스크는 어느 위치를 계산에서 제외하거나 점수를 매우 작게 만들지 나타낸다.
텐서 그림에서 패딩을 값 0으로만 칠하면 실제 토큰의 0과 구분되지 않는다. 빗금, 테두리, “PAD” 라벨을 사용하고 마스크 배열을 별도 작은 그림으로 둔다. 마스크 모양이 입력과 어떻게 방송되는지도 확인한다. NumPy의 브로드캐스팅 규칙은 끝쪽 축부터 크기가 같거나 한쪽이 1인지 비교한다.
| 배치 | 토큰 자리 | 유효 길이 | 마스크 |
|---|---|---|---|
| 문장 A | A1 A2 A3 A4 | 4 | 1 1 1 1 |
| 문장 B | B1 B2 PAD PAD | 2 | 1 1 0 0 |
| 그림 규칙 | PAD는 빗금 | 0값과 구분 |
LLM 요청문에는 축 사전과 변환 이력을 준다
텐서 모양만 주고 그림을 요구하면 모델이 축 이름을 임의로 붙일 수 있다. 축 사전, dtype, 패딩 규칙, 현재 연산, 변환 전후 모양을 제공한다. 각 그림은 전체 텐서, 선택한 단면, 축 교환 전후 중 하나의 질문만 담당하게 한다.
값이 너무 많으면 일부를 임의로 고르지 말고 표본 규칙을 적는다. 예를 들어 첫 배치, 첫 여덟 토큰, 특징 네 개를 선택했다고 밝힌다. 실제 모델 값이면 체크포인트, 층, 입력 문장, 토크나이저 버전, 추출 코드를 기록한다. 준비된 수치라면 캡션에 교육용이라고 쓴다.
잘못된 텐서 그림은 원근감으로 값을 가린다
수정 전 그림은 3차원 상자를 기울여 그리면서 뒤쪽 판의 글자와 값이 앞 판에 가렸다. 독자는 깊이 축의 순서도 알 수 없었다. 전체 구조는 축 설명용 선 그림으로 남기고 실제 값은 배치별 2차원 단면 세 장으로 분리했다.
또 [B,T,D]와 [B,H,T,Dh]를 모두 “3차원 텐서”라고 적은 오류가 있었다. 뒤 배열은 축이 네 개다. 축 수, 모양, 축 이름을 함께 고치고 H×Dh=D 관계를 주석에 넣었다. 시각적인 입체감보다 정확한 인덱스 대응을 우선했다.
완료 기준은 모든 축과 인덱스가 왕복되는가다
최종 검수에서는 축 수와 모양, 축 이름, 원소 수, dtype, 패딩과 마스크, 슬라이스, reshape, transpose를 확인한다. 변환 전 인덱스 하나를 골라 변환 후 위치를 찾고 값이 같은지 시험한다. 방송 연산은 맞춰지는 축과 복제되는 축을 표시한다.
텐서 시각화는 큰 숫자 배열을 이해할 수 있는 단면으로 나눈다. 화려한 입체 모형이 목적은 아니다. 독자가 그림의 셀에서 원래 X[b,t,d]와 변환 기록으로 돌아갈 수 있고, 패딩과 실제 0을 구분할 수 있을 때 검수가 끝난다.
| 검사 | 통과 기준 | 미통과 행동 |
|---|---|---|
| 축 | 수·이름·순서 일치 | 축 사전 수정 |
| 원소 | reshape 전후 개수 동일 | 모양 계산 재검토 |
| 인덱스 | 전후 위치와 값 추적 가능 | 대응표 추가 |
| 마스크 | PAD·실제 0 구분 | 무늬·라벨 추가 |
| 단면 | 선택 규칙·공통 범위 명시 | 캡션 보완 |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
다음 텐서를 읽기 위한 시각화 명세를 만들어 줘. 1. 텐서의 축 수, 모양, axis별 이름과 크기, dtype, device를 표로 적는다. 2. X[b,t,d]처럼 각 인덱스가 가리키는 대상을 정의한다. 3. 전체 구조 그림과 실제 값 단면을 분리하고, 단면 선택 규칙을 명시한다. 4. slice·reshape·transpose 전후 모양과 원 인덱스→새 인덱스 대응 예시를 적는다. 5. reshape는 원소 수 보존을 계산하고, transpose는 축 라벨을 함께 바꾼다. 6. 패딩·마스크·결측·실제 0을 서로 다른 표기로 구분한다. 7. broadcasting은 끝쪽 축부터 크기가 같거나 1인지 검사한다. 8. 실제 모델에서 추출하지 않은 값은 교육용 예시라고 표시하고 제공하지 않은 축 의미를 추정하지 않는다. [텐서 모양·값·변환 코드] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.