728x90
텐서는 다차원 배열로, 수학적인 계산을 위해 사용되는 데이터 구조이다.
- 차원(Dimension):
텐서는 여러 차원을 가지며, 각 차원은 텐서의 축(axis)이라고도 한다. 예를 들어 2차원 텐서는 행(row)과 열(column)의 2개의 축을 가지고 있다. - 크기(Size):
텐서의 크기는 각 차원에 따른 요소의 개수이다. 예를 들어, 2차원 텐서의 크기는 행과 열의 개수로 표현된다. - 데이터 타입(Data Type):
텐서는 데이터의 유형을 나타내는 데이터 타입을 가지고 있다. 정수형, 실수형, 불리언 등의 데이터 타입을 가질 수 있다. - 연산(Operation):
텐서는 다양한 수학적인 연산을 지원한다. 텐서 간의 산술 연산(덧셈, 곱셈 등), 선형 대수 연산(행렬 곱셈, 전치 등), 통계 연산(평균, 표준편차 등), 그리고 신경망에서 사용되는 활성화 함수 등을 포함한다. - GPU 가속화(GPU Acceleration):
텐서는 GPU를 활용하여 병렬 계산을 수행할 수 있으며, 이는 대규모 데이터와 복잡한 모델의 효율적인 처리를 가능하게 한다.
텐서는 주로 수치 연산을 위해 사용되며, 다양한 분야에서 인공지능, 딥러닝, 과학적 연구 등 다양한 응용 분야에서 활발하게 사용된다. PyTorch, TensorFlow 등의 딥러닝 프레임워크에서 텐서를 다루는 기능을 제공하고 있다.
2차원 텐서 VS. 3차원 텐서 VS. 4차원 텐서
- 2차원 텐서:
- 예시: 행렬(Matrix)
- 차원: 행(row)과 열(column)의 2차원 구조
- 요소: 행과 열에 해당하는 값으로 구성됨
- 시각화: 행렬 형태로 시각화 가능
- 사용 사례: 선형 대수, 이미지 처리, 표현 학습 등 - 3차원 텐서:
- 예시: 이미지 데이터의 채널, 깊이를 포함한 텐서
- 차원: 행(row), 열(column), 깊이(depth)의 3차원 구조
- 요소: 행, 열, 깊이에 해당하는 값으로 구성됨
- 시각화: 여러 개의 행렬을 겹쳐서 시각화 가능
- 사용 사례: 이미지, 동영상, 3D 모델 등 - 4차원 텐서:
- 예시: 동영상 데이터의 프레임과 시간을 포함한 텐서
- 차원: 행(row), 열(column), 깊이(depth), 시간(time)의 4차원 구조
- 요소: 행, 열, 깊이, 시간에 해당하는 값으로 구성됨
- 시각화: 여러 개의 3차원 텐서를 겹쳐서 시각화 가능
- 사용 사례: 동영상, 시계열 데이터, 3D 볼륨 등
import numpy as np
# 1차원 리스트를 NumPy 배열로 변환
data = [1, 2, 3, 4, 5]
tensor_1d = np.array(data)
print(tensor_1d)
# [1 2 3 4 5]
# 2차원 리스트를 NumPy 배열로 변환
data = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
tensor_2d = np.array(data)
print(tensor_2d)
"""
[[1 2 3]
[4 5 6]
[7 8 9]]
"""
# 3차원 리스트를 NumPy 배열로 변환
data = [[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]],
[[9, 10],
[11, 12]]]
tensor_3d = np.array(data)
print(tensor_3d)
"""
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]]
"""
# 크기가 2x3x4x5인 4차원 텐서 생성
tensor_4d = np.zeros((2, 3, 4, 5))
"""
[[[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]]
[[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]]]
"""
728x90
'자연어 처리(NLP) 공부' 카테고리의 다른 글
| 순전파(Forward propagation), 역전파(Backpropagation) (0) | 2023.06.15 |
|---|---|
| 기계 번역 Task 과정 (0) | 2023.06.14 |
| collate_fn이란? (0) | 2023.06.13 |
| 디코더에 <SOS> 토큰과 <EOS> 토큰을 추가하는 이유? (0) | 2023.06.12 |
| WordPiece Tokenizer 알고리즘 (1) | 2023.06.08 |