본문 바로가기
프로그래밍/파이썬(Python)

파이썬(Python) 텐서(Tensor)란?

by comflex 2023. 3. 1.
728x90
반응형

Tensor는 다차원 배열로, 수치 데이터를 저장하고 다루는 데 사용됩니다. Tensor는 보통 벡터, 행렬, n차원 배열 등의 형태를 가지며, 데이터의 종류에 따라 다양한 유형이 존재합니다. 예를 들어, 이미지 데이터는 3차원 Tensor로 표현할 수 있으며, 각 차원은 가로, 세로, 색상 채널을 나타냅니다.

Tensor를 생성해보자

Tensor를 생성하기 위해서는 먼저 파이썬에서 텐서플로우(TensorFlow) 또는 파이토치(PyTorch)와 같은 라이브러리를 설치해야 합니다. 이 글에서는 텐서플로우를 사용하여 Tensor를 생성하는 방법을 알아보겠습니다.

 

import tensorflow as tf

# 스칼라 Tensor
scalar = tf.constant(1)

# 1D Tensor
vector = tf.constant([1, 2, 3])

# 2D Tensor
matrix = tf.constant([[1, 2, 3], [4, 5, 6]])

# 3D Tensor
tensor = tf.constant([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

위 코드에서 tf.constant() 함수를 사용하여 Tensor를 생성합니다. tf.constant() 함수는 파이썬의 list나 numpy 배열과 같은 데이터를 받아 Tensor로 변환합니다.

반응형

Tensor의 속성

Tensor는 데이터의 차원, 크기, 데이터 타입 등의 속성을 가지고 있습니다. 이러한 속성들은 Tensor를 조작하거나 다른 함수와 함께 사용할 때 중요한 역할을 합니다. Tensor의 속성을 확인하기 위해서는 다음과 같은 함수들을 사용할 수 있습니다.

 

import tensorflow as tf

# 2D Tensor
matrix = tf.constant([[1, 2, 3], [4, 5, 6]])

print("Rank:", tf.rank(matrix))
print("Shape:", tf.shape(matrix))
print("Data Type:", matrix.dtype)

위 코드에서 tf.rank() 함수는 Tensor의 차원을 반환합니다. tf.shape() 함수는 Tensor의 크기를 반환하며, 반환된 값은 Tensor로부터 얻은 TensorShape 클래스 객체입니다. 마지막으로 matrix.dtype를 사용하여 Tensor의 데이터 타입을 확인할 수 있습니다.

Tensor의 연산

Tensor는 다른 Tensor와 연산을 수행할 수 있습니다. 연산은 텐서의 크기와 데이터 타입에 따라 제한됩니다. 예를 들어, 두 개의 Tensor를 더하려면 두 Tensor의 크기와 데이터 타입이 일치해야 합니다.

import tensorflow as tf

# 2D Tensor
matrix1 = tf.constant([[1, 2], [3, 4]])
matrix2 = tf.constant([[5, 6], [7, 8]])

# Tensor 덧셈 연산
addition = tf.add(matrix1, matrix2)

# Tensor 곱셈 연산
multiplication = tf.matmul(matrix1, matrix2)

print("Addition:", addition)
print("Multiplication:", multiplication)

위 코드에서 tf.add() 함수를 사용하여 두 Tensor를 더하고, tf.matmul() 함수를 사용하여 두 Tensor를 곱셈합니다. 더하기와 곱하기 연산은 두 Tensor가 모두 2D Tensor이며 크기가 일치하기 때문에 가능합니다.

Tensor의 인덱싱과 슬라이싱

Tensor의 인덱싱과 슬라이싱은 파이썬에서 리스트나 배열을 다루는 방법과 매우 유사합니다. 특정 위치에 있는 값을 얻거나 특정 범위의 값을 추출하는 등의 작업을 수행할 수 있습니다.

import tensorflow as tf

# 2D Tensor
matrix = tf.constant([[1, 2, 3], [4, 5, 6]])

# 인덱싱
print(matrix[0][0])  # 1

# 슬라이싱
print(matrix[:, :-1])  # [[1, 2], [4, 5]]

Tensor의 변환

Tensor의 변환은 Tensor의 크기와 모양을 변경하는 작업을 말합니다. 이는 Tensor를 다른 함수와 함께 사용할 때 유용합니다. 텐서플로우에서는 다양한 변환 함수를 제공합니다.

 

import tensorflow as tf

# 2D Tensor
matrix = tf.constant([[1, 2], [3, 4]])

# Tensor의 크기 변경
reshaped_matrix = tf.reshape(matrix, [1, 4])

# Tensor의 차원 변경
rank3_tensor = tf.reshape(matrix, [1, 2, 2])

print("Reshaped Matrix:", reshaped_matrix)
print("Rank 3 Tensor:", rank3_tensor)

위 코드에서 tf.reshape() 함수를 사용하여 Tensor의 크기와 차원을 변경합니다. tf.reshape(matrix, [1, 4])는 2D Tensor를 1x4 크기의 2D Tensor로 변경하며, tf.reshape(matrix, [1, 2, 2])는 2D Tensor를 1x2x2 크기의 3D Tensor로 변경합니다.

728x90
반응형