반응형
텐서플로우 (TensorFlow)
- 머신러닝을 위한 엔드 투 엔드 오픈 플랫폼
- 머신러닝 모델을 쉽게 만들 수 있음
- 케라스 기반
케라스 (Keras)
- 사용자 친화적인 API를 사용
- 신속한 프로토타입 제작, 최첨단 연구 및 프로덕션 가능
- 텐서플로우의 상위 수준 API는 신경망을 정의하고 학습시키기 위해 케라스를 기반으로 함
사용하기 전에...
- 구글 코랩 (Colab)
- 머신 러닝 용도로 사용하기 때문에 텐서플로우가 내장되어 있음, 설치 할 필요 X
- 아나콘다 환경 (Python, Jupyter Notebook)
- 데이터 분석 용도로 사용하기 때문에 텐서플로우가 없음, 설치해야 함
conda install tensorflow
텐서플로우 라이브러리 호출
import tensorflow as tf
from tensorflow import keras
모델링
- 계층(레이어)과 뉴런(유닛)의 갯수를 설정
model = tf.keras.Sequential( [tf.keras.layers.Dense(units=1, input_shape=(1,) ) ] )
- Sequential 클래스 : 함수와 비슷하지만 대문자로 구분, 뉴럴 네트워크 모델링의 자체, 틀을 의미
- Dense : 계층 (layers)
- tf.keras.layers.Dense()
- Dense Parameter
- units : 유닛(노드)의 수
- activation : 활성 함수 종류
- input_shape : 입력층 크기 설정
- Dense Parameter
- tf.keras.layers.Dense()
컴파일
- 컴파일을 하기 위해서는 2개의 함수(error/loss, optimizer) 필요
loss : 학습을 통해 예측한 값과 실제 값의 손실을 설정
- SSE(Sum of Squares Error) : 제곱의 합
- MSE(Mean Squared Error) : 제곱의 합의 평균
- MAE(Mean Absolute Error) : 절대갑의 합의 평균
- RMSE(Root Mean Squared Error) : 제곱의 합의 평균에 루트를 씌운 값
optimizer : 오차/손실을 최소화하기 위하여 최적화 설정
- Adam : 단순하게 가장 많이 사용되는 옵티마이저, 옵티마이저 사용이 어렵다면 adam을 사용
- 옵티마이저 예) 오솔길 길 찾기에 따른 옵티마이저 종류 설명
예시를 통한 딥러닝 설명
- 예시 : 1개(x)당 50원(y)인 사탕이 7개일 경우 얼마일까?
학습 데이터 분리 (수식 설정)
- 머신러닝 학습을 위한 데이터를 x와 y로 분리하여 수식 설정
x = [1, 2, 3, 4, 5, 6] # 갯수 설정
y = [50, 100, 150, 200, 250, 300] # 사탕 가격 설정
머신러닝 학습
- epochs : 가중치를 설정하여 오차를 구하는 과정의 횟수
model.fit(x, y ,epochs= 500)
머신러닝 예측
- 학습을 리스트의 객체로 하였기 때문에 같은 객체를 넣어주어야 하므로 리스트 객체로 값 대입
# x,y를 리스트로 하여 학습시켰기 때문에 리스트로 값을 넣어주어야 함
model.predict( [7] )
결과값 확인
- 500번의 학습을 거쳐 7*50 = 350에 근사한 값을 출력
전체 소스 코드
import tensorflow as tf
import numpy as np
from tensorflow import keras
def modeling(y_new):
x = [ 1, 2, 3, 4, 5, 6 ]
y = [ 50, 100, 150, 200, 250, 300 ]
model = tf.keras.Sequential( [tf.keras.layers.Dense(units=1, input_shape=(1,) ) ] )
model.compile(loss='mse', optimizer='sgd')
model.fit(x, y, epochs=500)
return model.predict(y_new)[0]
prediction = modeling( [7] )
print(prediction)
반응형