머신러닝에서의 Tensor란 무엇인가? Numpy, TensorFlow, Pytorch의 Tensor 알아보기

2024. 7. 13. 11:40·Machine Learning Math/Linear Algebra
반응형

Tensor란 무엇인가?

머신러닝을 공부하다보면 Tensor라는 말이 자주 쓰인다 TensorFlow 프레임웍에는 아예 이름에 Tensor가 들어가 있고, Pytorch에서 스칼라 값을 만들 때는 torch.tensor(100) 같이 사용하기도 한다. 도대체 Tensor가 무엇을 뜻하길래 프레임웍의 이름에도 들어가 있고 모델을 만드는 함수의 이름으로도 들어가는 것일까?

Tensor는 머신러닝에서 데이터 구조를 일반화한 개념으로, 벡터와 행렬을 포함하여 더 높은 차원의 데이터를 표현할 수 있는 다차원 배열이다. 0차원 스칼라, 1차원 벡터, 2차원 행렬, 그리고 n차원 배열을 Tensor를 사용해 표현할 수 있으며, Tensorflow나 Pytorch같은 프레임웍은 Tensor를 기본 데이터 구조로 채택한다. 이들 프레임웍들 내부에서는 Tensor 연산을 최적화하며, 연구자와 개발자가 복잡한 수학적 연산을 손쉽게 실행할 수 있게 도와준다.

 

Tensor의 종류

Tensor의 종류는 다음과 같다.

차원(Dimension) 수학적인 이름 설명 예시
0 스칼라(Scalar) 0차원 텐서, 크기값 표현 x
1 벡터(Vector) 1차원 텐서, 배열 [x1,x2,x3]
2 행렬(Matrix) 2차원 텐서, 표 [[x1,x2,x3],[y1,y2,y3]]
3 3차원 텐서(3-Tensor) 3차원 텐서, 3차원 표 [[[x1,x2,x3],[y1,y2,y3]],[[z1,z2,z3],[w1,w2,w3]]]
n n차원 텐서(n-Tensor) n차원 텐서, higher dimensional  

 

 

 

각 라이브러리, 프레임웍의 Tensor 

Numpy 라이브러리의 Tensor

Numpy 라이브러리에서 Tensor를 표현하는 방법에 대해 알아보자.

0차원 Tensor

0차원 Tensor는 단순히 array 함수로 값을 넘기는 것으로 표현된다.

import numpy as np
scalar = np.array(42)
print(scalar)

 

1차원 Tensor

1차원 텐서는 array 함수로 배열을 넘기는 것으로 표현된다.

vector = np.array([1, 2, 3])

 

2차원 Tensor

2차원 텐서는 array 함수로 2차원 배열을 넘기는 것으로 표현된다.

matrix = np.array([[1, 2, 3], [4, 5, 6]])

 

 

3차원 Tensor

3차원 텐서는 array 함수로 3차원 배열을 넘기는 것으로 표현된다.

tensor_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

 

각 구조 출력해보기

앞서 만든 Tensor들의 모양과 구조를 프린트 해보자.

import numpy as np

scalar = np.array(42)
vector = np.array([1, 2, 3])
matrix = np.array([[1, 2, 3], [4, 5, 6]])
tensor_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

print("Scalar (0D Array):")
print("모양: " + str(scalar))
print("구조: " + str(scalar.shape))
print("\n")
print("Vector (1D Array):")
print("모양: " + str(vector))
print("구조: " + str(vector.shape))
print("\n")
print("Matrix (2D Array):")
print("모양: " + str(matrix))
print("구조: " + str(matrix.shape))
print("\n")
print("3D Tensor (3D Array):")
print("모양: " + str(tensor_3d))
print("구조: " + str(tensor_3d.shape))

 

그러면 다음과 같은 출력이 나온다.

Scalar (0D Array):
모양: 42
구조: ()


Vector (1D Array):
모양: [1 2 3]
구조: (3,)


Matrix (2D Array):
모양: [[1 2 3]
 [4 5 6]]
구조: (2, 3)


3D Tensor (3D Array):
모양: [[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
구조: (2, 2, 2)

 

 

 

TensorFlow 프레임웍의 Tensor

이번에는 TensorFlow 프레임웍에서 Tensor를 표현하는 방법에 대해 알아보자.

 

0차원 Tensor

0차원 Tensor는 tf.Variable 함수로 값을 넘기는 것으로 표현된다.

import tensorflow as tf
scalar = tf.Variable(42)

 

1차원 Tensor

1차원 텐서는 tf.Variable 함수로 배열을 넘기는 것으로 표현된다.

vector = tf.Variable([1, 2, 3])

 

2차원 Tensor

2차원 텐서는 tf.Variable 함수로 2차원 배열을 넘기는 것으로 표현된다.

matrix = tf.Variable([[1, 2, 3], [4, 5, 6]])

 

 

3차원 Tensor

3차원 텐서는 tf.Variable 함수로 3차원 배열을 넘기는 것으로 표현된다.

tensor_3d = tf.Variable([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

 

각 구조 출력해보기

앞서 만든 Tensor들의 모양과 구조를 프린트 해보자.

import tensorflow as tf

scalar = tf.Variable(42)
vector = tf.Variable([1, 2, 3])
matrix = tf.Variable([[1, 2, 3], [4, 5, 6]])
tensor_3d = tf.Variable([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

print("Scalar (0D Tensor):")
print("모양: " + str(scalar.numpy()))
print("구조: " + str(scalar.shape))
print("\n")
print("Vector (1D Tensor):")
print("모양: " + str(vector.numpy()))
print("구조: " + str(vector.shape))
print("\n")
print("Matrix (2D Tensor):")
print("모양: " + str(matrix.numpy()))
print("구조: " + str(matrix.shape))
print("\n")
print("3D Tensor (3D Tensor):")
print("모양: " + str(tensor_3d.numpy()))
print("구조: " + str(tensor_3d.shape))

 

그러면 다음과 같은 출력이 나온다.

Scalar (0D Tensor):
모양: 42
구조: ()


Vector (1D Tensor):
모양: [1 2 3]
구조: (3,)


Matrix (2D Tensor):
모양: [[1 2 3]
 [4 5 6]]
구조: (2, 3)


3D Tensor (3D Tensor):
모양: [[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
구조: (2, 2, 2)

 

 

Pytorch 프레임웍의 Tensor

마지막으로 Pytorch 프레임웍에서 텐서를 표현하는 방법을 살펴보자.

 

0차원 Tensor

0차원 Tensor는 torch.tensor 함수로 값을 넘기는 것으로 표현된다.

import torch
scalar = torch.tensor(42)

 

1차원 Tensor

1차원 텐서는 torch.tensor 함수로 배열을 넘기는 것으로 표현된다.

vector = torch.tensor([1, 2, 3])

 

2차원 Tensor

2차원 텐서는 torch.tensor 함수로 2차원 배열을 넘기는 것으로 표현된다.

matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])

 

 

3차원 Tensor

3차원 텐서는 torch.tensor 함수로 3차원 배열을 넘기는 것으로 표현된다.

tensor_3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

 

각 구조 출력해보기

앞서 만든 Tensor들의 모양과 구조를 프린트 해보자.

import torch

scalar = torch.tensor(42)
vector = torch.tensor([1, 2, 3])
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
tensor_3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

print("Scalar (0D Tensor):")
print("모양: " + str(scalar.item()))
print("구조: " + str(scalar.shape))
print("\n")
print("Vector (1D Tensor):")
print("모양: " + str(vector))
print("구조: " + str(vector.shape))
print("\n")
print("Matrix (2D Tensor):")
print("모양: " + str(matrix))
print("구조: " + str(matrix.shape))
print("\n")
print("3D Tensor (3D Tensor):")
print("모양: " + str(tensor_3d))
print("구조: " + str(tensor_3d.shape))

 

 

그러면 다음과 같은 출력이 나온다. 

Scalar (0D Tensor):
모양: 42
구조: torch.Size([])


Vector (1D Tensor):
모양: tensor([1, 2, 3])
구조: torch.Size([3])


Matrix (2D Tensor):
모양: tensor([[1, 2, 3],
        [4, 5, 6]])
구조: torch.Size([2, 3])


3D Tensor (3D Tensor):
모양: tensor([[[1, 2],
         [3, 4]],

        [[5, 6],
         [7, 8]]])
구조: torch.Size([2, 2, 2])
반응형
저작자표시 비영리 변경금지 (새창열림)

'Machine Learning Math > Linear Algebra' 카테고리의 다른 글

Tensor 사칙 연산, 아다마르 곱셈(Hadamard Product) 한 번에 정리하기: Numpy, TensorFlow, PyTorch에서의 사용법 정리  (0) 2024.07.18
기저 벡터(Basis Vector)와 직교 벡터(Orthogonal Vector)  (1) 2024.07.17
L1 Norm, L2 Norm, Squared L2 Norm, Infinity Norm 한 번에 정리하기 : Numpy, TensorFlow, PyTorch 에서 사용하기  (0) 2024.07.16
L2 Norm과 Unit Vector 알아보기 : Numpy, TensorFlow, PyTorch의 Norm 연산과 Unit Vector  (0) 2024.07.15
벡터 전치(Vector Transposition) 알아보기: Tensorflow, Pytorch, Numpy  (0) 2024.07.14


'Machine Learning Math/Linear Algebra' 카테고리의 다른 글
  • 기저 벡터(Basis Vector)와 직교 벡터(Orthogonal Vector)
  • L1 Norm, L2 Norm, Squared L2 Norm, Infinity Norm 한 번에 정리하기 : Numpy, TensorFlow, PyTorch 에서 사용하기
  • L2 Norm과 Unit Vector 알아보기 : Numpy, TensorFlow, PyTorch의 Norm 연산과 Unit Vector
  • 벡터 전치(Vector Transposition) 알아보기: Tensorflow, Pytorch, Numpy
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 안드로이드를 위한 Coroutines (2)
      • Unit Testing (19)
      • GitHub Actions (0)
      • 공식 문서 번역 (35)
        • Coroutines 공식 문서 (35)
      • 알고리즘 (7)
        • Kotlin 자료구조 (0)
        • 알고리즘 (7)
        • Kotlin으로 구현하는 자료구조 (0)
      • 코딩 테스트 (0)
      • Deep Learning (0)
      • Machine Learning Math (17)
        • Linear Algebra (17)
      • ML (0)
      • Docker (15)
      • Kubernetes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 코틀린 코루틴의 정석 책 출간 소식
  • 인기 글

  • 태그

    코루틴
    코루틴 채널
    Machine Learning
    Coroutines Flow
    pytorch
    코루틴 Flow
    도커
    junit
    unit test
    Coroutines
    Coroutines Context
    Coroutines Channel
    unit testing
    Kotlin
    컨테이너
    coroutine
    numpy
    Docker
    mockito
    TensorFlow
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
머신러닝에서의 Tensor란 무엇인가? Numpy, TensorFlow, Pytorch의 Tensor 알아보기
상단으로

티스토리툴바