본문으로 건너뛰기
실습하기

텐서플로우의 기본 단위, 텐서(Tensor)

텐서(Tensor)는 텐서플로우(TensorFlow)에서 데이터를 표현하는 기본 단위입니다.

머신러닝과 딥러닝 모델에서는 수많은 숫자 데이터를 다루게 되는데, 주로 입력 데이터(features), 가중치(weights), 손실(loss) 등을 표현하는 데 사용됩니다.

손실은 모델이 예측한 값과 실제 값 사이의 차이를 나타내는 값으로, 모델이 학습하는 동안 최소화하려는 대상입니다.


텐서 만들기

tf.constant()를 사용하면 변하지 않는 상수 텐서를 생성할 수 있습니다.

텐서 생성 예시
import tensorflow as tf

# 1차원 텐서 생성
tensor = tf.constant([1, 2, 3, 4, 5])

위 코드에서 tf.constant([1, 2, 3, 4, 5])는 1차원 배열 형태의 텐서를 생성합니다.


딥러닝 모델에서 가중치와 편향 같은 값들은 학습 과정에서 변경됩니다. 이와 같이 가변적인 텐서를 표현할 때는 tf.Variable()을 사용합니다.

학습 가능한 변수 생성
# 학습 가능한 변수 생성
weight = tf.Variable([0.5, -0.3, 0.8], dtype=tf.float32)

이 함수는 모델이 학습하면서 업데이트할 값을 저장하는 데 사용되며, tf.GradientTape()와 함께 자동 미분 기능을 활용할 때 필수적입니다.


텐서의 형태

예를 들어, 이미지 분류 모델에서는 특정 이미지의 각 픽셀 값은 텐서로 표현할 수 있습니다.

이미지 데이터를 텐서로 표현하는 예시
# 이미지의 픽셀 값을 텐서로 표현
image_tensor = tf.constant([
[0, 128, 255, 64, 32],
[12, 200, 30, 90, 255],
[255, 180, 75, 40, 0],
[80, 190, 250, 140, 30],
[50, 100, 150, 200, 250]
], dtype=tf.float32)

자연어 처리(NLP)에서는 단어 임베딩(word embedding) 벡터가 텐서로 변환됩니다.

단어 임베딩은 단어를 숫자 형태의 벡터로 표현하는 기법으로, 단어 간의 의미적 유사성을 반영하여 단어를 수치화합니다.

비슷한 의미를 가진 단어는 유사한 벡터로 표현됩니다.

단어 임베딩을 텐서로 표현하는 예시
# 강아지 임베딩 벡터
dog = tf.constant([0.2, 0.4, 0.6, 0.8, 1.0], dtype=tf.float32)

# 고양이 임베딩 벡터 (강아지와 유사한 벡터)
cat = tf.constant([0.25, 0.38, 0.58, 0.85, 0.95], dtype=tf.float32)

# 자동차 임베딩 벡터 (강아지와 다른 벡터)
car = tf.constant([-0.8, 0.1, -0.5, 0.3, -0.6], dtype=tf.float32)

위 텐서 예시는 2차원 배열 형태의 이미지 데이터와 1차원 벡터 형태의 단어 임베딩을 보여줍니다.


다음 수업에서는 텐서의 차원과 형태에 대해 더 자세히 알아보겠습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!