TensorFlow | 간단한 Deep learning 구현 (Keras)
in Machine Learning / Tf
Tensorflow를 이용하여 모델을 생성하고 학습시키는 방법
What is TensorFlow
머신러닝(딥러닝)을 위한 오픈소스 라이브러리
- 구글이 개발
- 데이터 처리, 딥러닝 모델 생성 및 학습을 위한 도구
- 페이스북이 개발한 딥러닝 프레임워크인 pytorch도 많이 쓰는 추세. pytorch vs.tensorflow
What is Keras
Tensor Flow의 패키지로 제공되는 고수준 API, 딥러닝 모델을 간단하고 빠르게 구현 가능
Tensor Flow 딥러닝 모델 구현
- 모델 클래스 객체 생성
tf.keras.models.Sequential()
- 모델의 layer 구성
tf.keras.layers.Dense(units, activation)
units
: 레이어 안의 Node 수activation
: 적용할 activiation 함수 (ex.relu
,sigmoid
,softmax
)- 모델 구성 예시 (1) - 리스트 형태
model = tf.keras.models.Sequential([ tf.keras.layers.Dense(20, input_dim = 2, activation='relu'), tf.keras.layers.Dense(20, activation='relu'), tf.keras.layers.Dense(1, activation='sigmoid') ])
- 모델 구성 예시 (2) - add()를 통해 layer 추가
model = tf.keras.Sequential() model.add(tf.keras.layers.Dense(16, input_dim=2, activation='relu')) model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
- 모델 학습 방식 설정
model.compile(optimizer, loss)
optimizer
: 모델 학습 최적화 방식loss
: 손실 함수 설정- 예시
model.compile(optimizer='adam', loss='mse')
- 모델 학습
model.fit(train_x, train_y)
- 모델 평가
model.evaluate(test_x, test_y)
- 모델 예측
pred = model.predict(test_x) # 예측값 반환
Tensor Flow + Keras를 활용하여 비선형회귀 구현
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
np.random.seed(100)
tf.random.set_seed(100)
# 비선형 데이터 샘플 생성
x_data = np.linspace(0, 10, 100)
y_data = 1.5 * x_data**2 -12 * x_data + np.random.randn(*x_data.shape)*2 + 0.5
# print(x_data)
# print(x_data.shape) # (100, )
# 모델 정의
model = tf.keras.models.Sequential([
( tf.keras.layers.Dense(20, input_dim = 1, activation='relu'),
) tf.keras.layers.Dense(20, activation='relu'),
tf.keras.layers.Dense(1)
])
model.compile(loss = 'mean_squared_error', optimizer = 'adam')
history = model.fit(x_data, y_data, epochs=500, verbose=1)
predictions = model.predict(x_data)
Reference
- https://wikidocs.net/156950