이런저런 IT 이야기
article thumbnail
Published 2023. 6. 1. 08:36
tensor? AI
반응형


텐서(Tensor)는 다차원 배열로, 수학적 연산을 수행하기 위해 사용되는 데이터 구조입니다. 텐서는 딥러닝 및 기계 학습 모델에서 데이터의 저장, 전달 및 처리에 사용됩니다. 텐서는 다양한 데이터 유형과 차원을 가질 수 있으며, 각 차원은 해당 데이터의 축(axis)을 나타냅니다.
텐서는 대개 다음과 같은 특징을 갖습니다:

  1. 차원(Dimension): 텐서는 0개 이상의 차원을 가지며, 각 차원은 해당 텐서의 축(axis)을 나타냅니다. 예를 들어, 1차원 텐서는 벡터, 2차원 텐서는 행렬로 표현됩니다.
  2. 모양(Shape): 텐서의 모양은 각 차원의 크기를 튜플(tuple)로 표현한 것입니다. 예를 들어, 2차원 텐서의 모양은 (행의 수, 열의 수)로 표현됩니다.
  3. 데이터 타입(Data Type): 텐서는 표현할 수 있는 데이터의 종류에 따라 데이터 타입을 가지게 됩니다. 예를 들어, 정수형, 부동소수점형, 불리언 등 다양한 데이터 타입이 있습니다.
  4. 원소(Element): 텐서는 각 원소가 특정 값을 가지는 다차원 배열로 구성됩니다. 각 원소는 해당 텐서의 차원과 인덱스를 통해 접근할 수 있습니다.

0D Tensor:

  • 0D 텐서는 스칼라(Scalar)를 나타냅니다.
  • 스칼라는 단일 값으로 이루어진 데이터입니다.
  • 예를 들면, 숫자 5나 온도 25와 같은 단일 값이 스칼라입니다.
  • 0D 텐서는 차원이 없는 점으로 표현됩니다.
import numpy as np

# 0D 텐서 생성
tensor_0d = np.array(5)

# 텐서 출력
print(tensor_0d)




5

 
1D Tensor:

  • 1D 텐서는 벡터(Vector)를 나타냅니다.
  • 벡터는 크기와 방향을 가진 숫자의 배열입니다.
  • 1D 텐서는 한 줄로 늘어선 숫자의 배열로 표현됩니다.
  • 예를 들면, [1, 2, 3, 4, 5]와 같은 숫자들의 배열이 1D 텐서입니다.
import numpy as np

# 1D 텐서 생성
tensor_1d = np.array([1, 2, 3, 4, 5])

# 텐서 출력
print(tensor_1d)



[1 2 3 4 5]

 
2D Tensor:

  • 2D 텐서는 행렬(Matrix)를 나타냅니다.
  • 행렬은 2차원으로 구성된 숫자의 집합이며, 행과 열로 구성됩니다.
  • 2D 텐서는 행과 열의 조합으로 데이터를 구성하며, 각 요소는 두 개의 인덱스를 통해 접근할 수 있습니다.
  • 예를 들면, [[1, 2, 3], [4, 5, 6]]와 같은 행렬이 2D 텐서입니다.
import numpy as np

# 2D 텐서 생성
tensor_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 텐서 출력
print(tensor_2d)



[[1 2 3]
 [4 5 6]
 [7 8 9]]

 
3D Tensor:

  • 3D 텐서는 다차원 배열을 나타냅니다.
  • 3D 텐서는 행렬들의 집합으로 구성되며, 각 행렬은 같은 크기를 가지고 있습니다.
  • 3D 텐서는 데이터를 큐브 또는 볼륨으로 표현할 수 있습니다.
  • 예를 들면, [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]와 같은 3D 텐서가 있을 수 있습니다.
import numpy as np

# 3D 텐서 생성
tensor_3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

# 텐서 출력
print(tensor_3d)



[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]]

 
4D Tensor:

  • 4D 텐서는 다차원 데이터의 컬렉션을 나타냅니다.
  • 4D 텐서는 3D 텐서들의 배열로 구성되며, 각 3D 텐서는 같은 크기를 가지고 있습니다.
  • 4D 텐서는 예를 들어 이미지 데이터의 배치를 나타낼 수 있습니다.
  • 예를 들면, 이미지 데이터를 담고 있는 [B, C, H, W] 형태의 4D 텐서가 있을 수 있습니다.
    • B는 배치 크기(batch size)를 나타냅니다.
    • C는 채널 수(channel 수)를 나타냅니다.
    • H는 높이(height)를 나타냅니다.
    • W는 너비(width)
import numpy as np

# 4D 텐서 생성
tensor_4d = np.array([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]], [[[9, 10], [11, 12]], [[13, 14], [15, 16]]]])

# 텐서 출력
print(tensor_4d)



[[[[ 1  2]
   [ 3  4]]

  [[ 5  6]
   [ 7  8]]]


 [[[ 9 10]
   [11 12]]

  [[13 14]
   [15 16]]]]

여러 종류의 텐서가 있는 이유는 다양한 데이터 유형과 다양한 연산에 대한 효율적인 처리를 지원하기 위해서입니다. 텐서는 다차원 배열로, 데이터를 저장하고 다양한 수학적 연산을 수행하는 데 사용됩니다. 여러 종류의 텐서는 데이터의 차원과 구조를 나타내며, 다양한 유형의 데이터를 처리하는 데 유연성을 제공합니다.
예를 들어, 0D 텐서는 스칼라 값으로 단일 데이터 포인트를 나타내며, 1D 텐서는 벡터로 여러 개의 데이터 포인트를 순서대로 저장합니다. 2D 텐서는 행렬로 2차원 데이터 구조를 나타내며, 3D 텐서는 다차원 배열로 복잡한 데이터 구조를 처리합니다. 4D 텐서는 영상 데이터나 신경망의 배치 처리 등과 같이 다차원 데이터를 효과적으로 표현할 수 있습니다.
각 종류의 텐서는 데이터의 차원과 모양에 따라 다른 유형의 연산을 수행할 수 있도록 설계되었습니다. 또한, 딥러닝과 같은 머신러닝 알고리즘에서 다양한 계산을 효율적으로 처리하기 위한 최적화 기법이 특정 유형의 텐서에 적용될 수 있습니다.
따라서, 다양한 종류의 텐서가 존재하는 것은 다양한 데이터 유형과 연산에 대한 효율적인 처리와 유연성을 제공하기 위함입니다.

반응형
profile

이런저런 IT 이야기

@이런저런 IT 이야기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...

검색 태그