본문 바로가기

AIFFLE/STARTER

[DL] 2. 텐서 표현과 연산

728x90
학습 내용
  • 텐서 : 텐서란 무엇인지, 어떤 구조로 되어있는지 등 텐서의 개념에 대해 살펴보자
  • 텐서 타입 및 변환 : 텐서에 담을 수 있는 데이터의 타입에 대해 알아보고 텐서의 형태를 어떻게 바꾸는지 알아보자
  • 텐서 연산 : 텐서 연산은 어떤 종류가 있고 어떻게 계산 할 수 있는지 살펴봅니다.

 

1. 텐서(Tensor)

  • 데이터를 담기위한 컨테이너(container)
  • 다차원 배열 또는 리스트 형태와 유사
  • 일반적으로 수치형 데이터를 저장하고, 동적 크기를 가짐
  • Rank : 축의 개수
  • Shape : 형상(각 축에 따른 차원 개수)
  • Type : 데이터 타입

 

Scalars (rank-0 tensors)

  • 하나의 숫자만 담고 있는 텐서
  • 축 개수 0개
import numpy as np
x = np.array(12)
x

 

1D Tensor(Vector)

  • 1차원 텐서는 값들을 저장한 리스트와 유사한 텐서
  • 벡터(vector)라고도 부르며, 하나의 축이 존재

 

2D Tensor(Matrix)

  • 2차원 텐서는 행렬과 같은 모양으로 두개의 축이 존재
  • 일반적인 수치, 통계 데이터셋이 여기에 해당
  • 주로 샘플(samples)과 특성(features)을 가진 구조로 사용

 

3D Tensor

  • 3차원 텐서는 큐브(cube)와 같은 모양으로 세개의 축이 존재
  • 일반적으로 데이터가 연속된 시퀀스 데이터나 시간 축이 포함된 시계열 데이터에 해당
  • 주로 샘플(samples), 특성(features), 타임스텝(timesteps)을 가진 구조로 사용
  • 3차원 텐서를 이용하는 데이터로는 주식 가격 데이터셋, 시간에 따른 질병 발병 데이터 등이 존재

 

4D Tensor

  • 4차원 텐서는 4개의 축이 존재
  • 컬러 이미지 데이터가 대표적인 사례
  • 흑백 이미지 데이터는 3D Tensor로 가능
  • 주로 샘플(samples), 높이(height), 너비(width), 컬러 채널(channel)을 가진 구조로 사용

 

5D Tensor

  • 5차원 텐서는 5개의 축이 존재
  • 비디오 데이터가 대표적인 사례
  • 주로 샘플(samples), 프레임(frames), 높이(height), 너비(width), 컬러 채널(channel)을 가진 구조로 사용

 

2. 텐서 타입 및 변환

2.1 텐서 타입

2.2 텐서 변환

3. 텐서 연산

3.1 0차원 텐서의 연산

  • 텐서는 기본 산술과 다양한 연산을 수행 할 수 있습니다.
  • 먼저 더하기와 빼기 연산을 수행해보겠습니다. 더하기 연산자인 +와 빼기 연산자인 -를 이용해서 텐서간의 계산이 가능하고, addsubtract 함수를 이용해서도 계산이 가능합니다.
  • 곱하기와 나누기 연산도 */ 연산자를 이용하는 방법과 multiplydivide 함수를 이용하는 방법이 있습니다.
  • 텐서 연산에서 주의할 점은 서로 다른 타입을 가지는 텐서는 연산이 되지 않고, 에러가 발생한다는 점입니다.

3.2 1차원 텐서의 연산

  • 0차원의 상수값만 존재하는 텐서 계산 외에도 1차원 이상의 텐서에 대해서도 연산이 가능합니다. 다만 텐서의 모양이 직사각형이거나 연산이 가능하도록 형상을 맞춰주어야 합니다.

3.3 2차원 텐서의 연산

  • reduce_max(): 텐서 값 중에서 최대값을 계산합니다.
  • argmax(): 최대값의 위치를 반환합니다.
  • nn.softmax(): 텐서의 값을 0과 1 사이의 값으로 보여줍니다.
728x90

'AIFFLE > STARTER' 카테고리의 다른 글

[DL] 5. 모델 저장과 콜백  (0) 2024.05.07
[DL] 3. 딥러닝 구조와 모델  (0) 2024.05.02
[ML] 비지도학습  (0) 2024.05.02
[DL] 1. 딥러닝  (0) 2024.05.01
[ML] 지도학습(회귀)  (0) 2024.04.26