TensorFlow로 간단한 선형 회귀 모델 만들기
선형 회귀는 입력과 출력 사이의 선형 관계(직선으로 표현 가능한 관계)를 모델링하는 머신러닝 알고리즘입니다.
예를 들어, 다음과 같은 관계를 생각해보겠습니다.
-
x가 1일 때 y가 2
-
x가 2일 때 y가 4
-
x가 3일 때 y가 6
이러한 관계는 y = 2x
와 같은 선형 관계로 표현할 수 있습니다.
아래 코드는 컴퓨터가 숫자의 패턴을 학습하도록 돕는 간단한 머신러닝 모델을 만드는 예제입니다.
쉽게 설명하면, 주어진 숫자를 입력하면 그 숫자의 두 배를 출력하도록 컴퓨터가 스스로 학습하게 됩니다.
import tensorflow as tf import numpy as np # 입력 데이터 정의 x_train = np.array([1, 2, 3, 4, 5], dtype=np.float32) # 출력 데이터 정의 y_train = np.array([2, 4, 6, 8, 10], dtype=np.float32) # 모델 생성 model = tf.keras.Sequential([ # 입력값이 1개이고 출력값이 1개인 Dense 레이어 생성 tf.keras.layers.Dense(units=1, input_shape=[1]) ]) # 모델 컴파일 model.compile(optimizer='sgd', loss='mean_squared_error') # 데이터를 100번 반복 학습하여 규칙을 익히게 함 model.fit(x_train, y_train, epochs=100, verbose=1) # 예측 수행 print(model.predict([6])) # 예상 출력: 12에 가까운 값
코드의 각 부분을 살펴보면 다음과 같습니다.
1. 입력과 출력 데이터 정의
x_train
은 입력 데이터(1, 2, 3, 4, 5)이고, y_train
은 출력 데이터(2, 4, 6, 8, 10)입니다.
즉, 입력값을 2배 한 값이 출력이 됩니다.
2. 모델 생성
tf.keras.Sequential()
을 사용하여 신경망 모델을 만듭니다.
Dense(units=1, input_shape=[1])
은 입력과 출력이 각각 하나인 레이어를 의미합니다.
3. 모델 컴파일
optimizer='sgd'
는 경사 하강법(SGD)을 사용하여 학습합니다. 경사 하강법은 손실 함수를 최소화하는 방향으로 학습합니다.
loss='mean_squared_error'
는 오차를 줄이는 방법입니다.
데이터를 100번 반복 학습하여 규칙을 익히게 함
model.fit(x_train, y_train, epochs=100, verbose=1)
는 데이터를 500번 반복 학습하여 규칙을 익히게 합니다.
예측 수행
model.predict([6])
을 실행하면, 6의 두 배인 12에 가까운 값을 예측합니다.
이렇게 간단한 선형 회귀 모델을 만들어보았습니다.
다음 수업에서는 지금까지 텐서플로우에 대해 배운 내용을 점검하는 간단한 퀴즈를 풀어보겠습니다.
텐서플로우 모델을 사용하여 선형 회귀를 구현할 때, 입력 데이터와 출력 데이터 사이의 관계를 나타내는 코드는 무엇인가요?
Lecture
AI Tutor
Design
Upload
Notes
Favorites
Help