SteadyDrills

[DL]Tensor? 본문

카테고리 없음

[DL]Tensor?

Drills 2025. 2. 5. 21:41

# Tensor의 shape (형태) 확인
print(f"tensor_from_list의 shape: {tensor_from_list.shape}")


# Tensor의 dtype (자료형) 확인
print(f"tensor_from_list의 dtype: {tensor_from_list.dtype}")

# Tensor의 rank (차원) 확인 (len(shape) 또는 .ndim 사용)
print(f"tensor_from_list의 rank: {len(tensor_from_list.shape)}")
목차

250205

Tensor란?

Tensor는 딥러닝 모델이 이미지, 텍스트, 음성 등 다양한 데이터를 처리할 때, 이러한 데이터를 수치화하여 표현하는
다차원 배열이며, 스칼라, 벡터, 행렬을 일반화한 개념이다. 딥러닝 모델의 입력 데이터, 중간 계산 결과, 모델의 가중치와 편향 등 모든 것이 Tensor 형태로 표현되며, Tensor는 GPU와 같은 병렬 처리 장치에서 효율적인 연산을 가능하게 해 딥러닝 모델의 빠른 학습을 돕는 핵심적인 역할을 한다.

 

 

Tensor의  속성과 종류

Tensor의 핵심 속성: 축(Axis)과 랭크(Rank/Dimension)

  • 축 (Axis): Tensor의 각 차원을 의미하며, 0부터 시작하는 인덱스로 접근할 수 있다.
    즉, 축은 확장되는 방향을 의미합니다. 데이터를 '정렬'하거나 '인덱싱'할 수 있는 방향
    예를 들어, 스칼라(0차원 Tensor)는 값만 존재할 뿐 방향이 없어 축이 없고,행렬(2차원 Tensor)에서 첫 번째 축은 행, 두 번째 축은 열을 나타낸다.
  • 랭크 (Rank/Dimension): Tensor의 차원 개수(크기)를 의미하며, 0차원 Tensor는 랭크 0,
    1차원 Tensor는 랭크 1, 2차원 Tensor는 랭크 2를 가진다.
  • 비슷한 개념 같은데 왜 굳이 구별을 할까?
    랭크는 Tensor의 크기(magnitude) 또는 차원 수에 대한 정보만 제공하고, 축은 그 각각의 차원에 의미를 부여하고, 특정 차원을 지칭하는 데 사용되는 레이블(label) 또는 인덱스(index) 역할을 하기 때문이다.

 

Tensor의 종류

스칼라 (Scalar): 0차원 Tensor

스칼라는 단일 숫자 값을 내며, 크기 외에 다른 속성은 없다.

  • 예시: 온도(), 나이(), 시험 점수()

벡터 (Vector): 1차원 Tensor

벡터는 숫자들이 일렬로 나열된 형태로, 방향과 크기를 가진다.

  • 예시: 특정 단어의 임베딩 값 (예: [0.1, 0.5, -0.2, 0.8]), 한 학생의 과목별 점수 리스트 (예: [80, 90, 75])

행렬 (Matrix): 2차원 Tensor

행렬은 행(row)과 열(column)로 이루어진 사각형 형태의 숫자 배열이다.

  • 예시: 흑백 이미지 (픽셀 값이 행과 열로 구성), 스프레드시트 데이터 (행은 레코드, 열은 속성)

3차원 Tensor 이상

3차원 이상의 Tensor는 더욱 복잡한 데이터를 표현하는 데 사용되고 있다.

  • 3차원 Tensor 예시: 컬러 이미지 (높이, 너비, 색상 채널(RGB)의 세 축), 시계열 데이터 (샘플 수, 시간 단계, 특징 수)
  • 4차원 Tensor 예시: 동영상 (프레임 수, 높이, 너비, 색상 채널) 또는 여러 개의 컬러 이미지 묶음 (배치 크기, 높이, 너비, 색상 채널)

PyTorch로 구현한 Tensor

Tensor 생성

import torch
import numpy as np


# 리스트로부터 Tensor 생성
python_list = [[1, 2, 3], [4, 5, 6]]
tensor_from_list = torch.tensor(python_list)
print(f"리스트로부터 생성된 Tensor:\n{tensor_from_list}")

# 넘파이 배열로부터 Tensor 생성
numpy_array = np.array([[7, 8], [9, 10]])
tensor_from_numpy = torch.from_numpy(numpy_array)
print(f"넘파이 배열로부터 생성된 Tensor:\n{tensor_from_numpy}")


Tensor 형태, 자료형, 차원 확인

# Tensor의 shape (형태) 확인
print(f"tensor_from_list의 shape: {tensor_from_list.shape}")


# Tensor의 dtype (자료형) 확인
print(f"tensor_from_list의 dtype: {tensor_from_list.dtype}")

# Tensor의 rank (차원) 확인 (len(shape) 또는 .ndim 사용)
print(f"tensor_from_list의 rank: {len(tensor_from_list.shape)}")