TensorFlow를 사용하여 딥러닝 모델을 구축할 때, 데이터를 저장하고 연산을 수행하기 위한 기본 단위인 텐서(tensor)는 매우 중요한 역할을 합니다. 그 중에서도 tf.constant
와 tf.Variable
는 텐서를 생성하는 데 사용되는 대표적인 함수로, 두 함수의 차이를 명확히 이해하는 것이 효율적인 모델 설계와 학습에 큰 도움이 됩니다.
이번 포스팅에서는 이 두 함수의 차이점과 각각의 활용법, 그리고 모델 학습 시 어떤 상황에서 어떤 함수를 선택해야 하는지에 대해 실습 예제와 함께 자세히 설명드리겠습니다.
먼저, tf.constant
는 변하지 않는 상수 텐서를 생성하는 함수입니다. 상수 텐서는 한 번 정의되면 값이 고정되며, 이후에 변경할 수 없습니다. 주로 입력 데이터나 고정된 설정 값 등을 표현할 때 사용됩니다. 반면, tf.Variable
는 학습 과정에서 값이 변경될 수 있는 변수 텐서를 생성합니다. 모델의 가중치나 편향과 같이 학습 중 업데이트가 필요한 값들을 저장하는 데 사용되며, 초기값을 설정한 후 학습이 진행됨에 따라 값이 점진적으로 변화하게 됩니다.
두 함수의 주요 차이점은 다음과 같습니다.
tf.constant
는 생성 후 값을 변경할 수 없으며, 고정된 데이터를 표현하는 데 적합합니다. 반면, tf.Variable
는 값이 업데이트될 수 있어 모델의 학습 파라미터와 같이 동적인 데이터를 저장하는 데 사용됩니다.tf.constant
를 사용합니다. 반면, 학습 과정에서 파라미터를 업데이트해야 한다면 반드시 tf.Variable
를 사용해야 합니다.딥러닝 모델을 학습할 때, 일반적으로 입력 데이터는 변하지 않으므로 tf.constant
를 사용하며, 학습 과정에서 변화가 필요한 가중치나 편향, 또는 배치 정규화와 같은 파라미터들은 tf.Variable
를 사용합니다. 예를 들어, 신경망 모델에서 학습 가능한 가중치는 매 반복마다 최적화 알고리즘에 의해 업데이트되므로 tf.Variable
로 선언해야 합니다. 반면, 정해진 데이터셋이나 하이퍼파라미터 값은 tf.constant
로 선언하여 안정적으로 고정된 값을 사용할 수 있습니다.
아래는 TensorFlow를 활용하여 tf.constant
와 tf.Variable
의 차이점을 실습해 볼 수 있는 간단한 예제 코드입니다.
import tensorflow as tf
# 1. tf.constant를 사용하여 상수 텐서 생성
const_tensor = tf.constant([10, 20, 30])
print("상수 텐서 (tf.constant):", const_tensor.numpy())
# 2. tf.Variable을 사용하여 변수 텐서 생성
var_tensor = tf.Variable([1.0, 2.0, 3.0])
print("초기 변수 텐서 (tf.Variable):", var_tensor.numpy())
# 3. 상수 텐서 연산: 상수는 변경 불가능하므로 연산 결과만 출력
result_const = tf.add(const_tensor, 5)
print("상수 텐서에 5를 더한 결과:", result_const.numpy())
# 4. 변수 텐서 연산 및 업데이트: 변수는 값이 변경 가능
result_var = tf.multiply(var_tensor, 2)
print("변수 텐서를 2배 곱한 결과:", result_var.numpy())
# 5. 변수 업데이트: assign 또는 assign_add, assign_sub 등 사용
var_tensor.assign_add([0.5, 0.5, 0.5])
print("변수 텐서 업데이트 후:", var_tensor.numpy())
위 예제에서는 먼저 tf.constant
를 사용해 상수 텐서를 생성하고, 이를 이용해 단순한 덧셈 연산을 수행합니다. 이후 tf.Variable
를 사용하여 변수 텐서를 생성한 후, 곱셈 연산과 함께 assign_add
함수를 통해 변수를 업데이트하는 과정을 보여줍니다. 이처럼 상수와 변수의 사용법을 명확히 구분하여 활용하면, 모델 학습 시 불필요한 오류를 줄이고 코드의 가독성을 높일 수 있습니다.
실제 모델 학습 시 tf.Variable
는 반드시 필요합니다. 아래는 간단한 선형 회귀 모델을 구현하여 가중치와 편향을 업데이트하는 예제입니다.
import tensorflow as tf
# 데이터셋: 입력 X와 목표 Y
X = tf.constant([1.0, 2.0, 3.0, 4.0])
Y = tf.constant([2.0, 4.0, 6.0, 8.0])
# 모델 파라미터: 가중치와 편향 (학습 가능한 변수)
W = tf.Variable(0.0)
b = tf.Variable(0.0)
# 학습률 설정
learning_rate = 0.01
# 선형 모델 정의
def linear_model(x):
return W * x + b
# 손실 함수: 평균 제곱 오차(MSE)
def loss_fn(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred))
# 경사 하강법을 활용한 모델 업데이트
def train_step(x, y):
with tf.GradientTape() as tape:
y_pred = linear_model(x)
loss = loss_fn(y, y_pred)
gradients = tape.gradient(loss, [W, b])
W.assign_sub(learning_rate * gradients[0])
b.assign_sub(learning_rate * gradients[1])
return loss
# 간단한 학습 루프 실행
for epoch in range(100):
loss = train_step(X, Y)
if epoch % 10 == 0:
print(f"Epoch {epoch}, Loss: {loss.numpy():.4f}, W: {W.numpy():.4f}, b: {b.numpy():.4f}")
print("최종 모델 파라미터 - 가중치(W):", W.numpy(), ", 편향(b):", b.numpy())
위 예제에서는 입력 데이터와 목표 값을 tf.constant
로 고정하고, 가중치(W)와 편향(b)는 tf.Variable
로 선언하여 학습 과정에서 업데이트합니다. 경사 하강법을 사용해 손실을 최소화하면서 파라미터를 조정하는 과정을 통해, 모델이 주어진 데이터를 학습하는 모습을 확인할 수 있습니다. 이 예제는 딥러닝 모델의 기초적인 학습 원리를 이해하는 데 큰 도움이 됩니다.
TensorFlow의 tf.constant
와 tf.Variable
는 각각 상수와 변수 텐서를 생성하는 중요한 함수로, 두 함수의 차이점을 명확하게 이해하는 것은 안정적이고 효율적인 모델 학습을 위한 첫걸음입니다. 상수 텐서는 변경되지 않는 고정된 데이터를 표현하는 데 적합하며, 변수 텐서는 학습 과정에서 계속해서 업데이트되어야 하는 모델 파라미터를 저장하는 데 사용됩니다. 이번 포스팅에서 다룬 다양한 실습 예제와 선형 회귀 모델 구현 예제를 통해, 두 함수의 활용법을 직접 경험하고, 실제 딥러닝 프로젝트에 어떻게 적용할 수 있는지에 대해 보다 깊이 있는 이해를 얻으실 수 있기를 바랍니다.
TensorFlow의 기본 개념을 탄탄히 다진 후, 이를 바탕으로 더욱 복잡하고 다양한 모델을 구축할 수 있으며, 지속적인 실습과 학습을 통해 딥러닝 분야에서의 경쟁력을 높일 수 있을 것입니다.
DeepSeek-R1: 강화학습으로 스스로 진화하는 추론 특화 언어모델 DeepSeek-R1은 순수 강화학습(RL)과 소량의 Cold-start 데이터를 결합한 다단계…
TensorFlow Extended(TFX): 프로덕션 레벨의 E2E 기계학습 파이프라인 플랫폼 TensorFlow Extended(TFX)는 구글에서 자체 머신러닝 제품을 안정적으로…
AutoML-Zero: ‘zero’에서부터 스스로 진화하는 기계학습 알고리즘 기계학습 알고리즘 설계의 혁신, AutoML-Zero 단 몇 줄의 코드도…
TensorFlow Lite: 모바일 & IoT 디바이스를 위한 딥러닝 프레임워크 엣지 인텔리전스를 향한 경량화된 딥러닝 TensorFlow…
Graph Convolutional Networks(GCN) 개념 정리 최근 비정형 데이터의 대표격인 그래프(graph)를 처리하기 위한 딥러닝 기법으로 Graph…
Graph Neural Networks(그래프 뉴럴 네트워크) 기초 개념 정리 딥러닝은 이미지·음성·텍스트와 같은 격자(grid) 형태 데이터에서 뛰어난…