2021. 9. 10. 01:09ㆍai/Machine Learning
from tensorflow.keras.models import Sequential
model = Sequential() # 큰 box를 만들 수 있어요!
# Sequential() : 순차적인이라는 뜻을 가지며 data가 순차적으로
# model을 생성한 후 그 다음에 할일은
# layer를 추가하는 거예요
# model.add() # layer를 추가할 수 있어요!
# 설정을 잡아야 해요!
# model.compile()
# Optimizer(SGD, Adam, etc..)
# loss 설정 , metrics
# 학습을진행
# model.fit()
# 평가진행
# model.evaluate()
# 예측작업진행
# model.predict()
# 모델을 저장
# model.save()
Goole Tensorflow 2.0
-지금까지는 1.15으로 진행했는데 이론 이해하는데 있어 좋은방식
하지만 low level API이기 때문에 구현이 복잡(deeplearning가면 뒤집어짐)
-이제 2.x버전도 같이 사용 → google colab을 이용해도 되요
2.0버전이 "2019년 9월 30일"에 release
어떤 차이가 있나요?
(1)Eager Execution (즉시실행모드) → placeholder삭제 , Session 삭제, 초기화 삭제
(2)KERAS = deep Learning Library
프랑소와 숄레가만듬 → 딥러닝의 없어서 안댐 → 구글이 숄레 찾아감 → 숄레입사ㅋㅋ
(3)1.x 대와 호환이 안됨
Keras in tensorflow 2.0
-Machine Learning → 1960년대부터 시작해서 몇번의 raise and fall (흥망성쇠)
-deep Learning → 2010년도부터 Library들이 만들어지기 시작
2010 Theano Library (역사에 기록된 최초의 여성 수학자[피타고라스 아내])
2013 Caffe - 중국인 유학생 제작
2015 카네기멜론대 MxNet, google tensorflow, 프랑소와 솔레 Keras
2016 Ms CNTK (?)
독립변수가 2개인 Logistic Regression
Layer : 계층
- Model 안에 input layer 와 output layer가 있다
- Model 안에 W와 B가 있다
1. input layer
- input layer 당연히 data를 받아들이는 역할을 한다.
- x값이 본래는 2차원이나 들어올때 각각x값이 1차원으로 각각node로 들어오게 된다
- input layer 안에는 node가 있으며 독립변수만큼 생성되서 그냥 받아서 흘려 보낸다.
- input layer는 독립변수 즉 colum을 각각 input한다
1.5
- W는 당연히 X갯수만큼 있어야하는데 자동으로 늘어난다
- model안에 있던 W가 X랑 각각 곱해서 output layer로 전달
2. output layer (1개의 logistic regression을 표현)
- W가 X랑 각각 곱한 값을 각각 + B를 해준다 이때나온값이 Z이다 ( linear regression )
- Z를 activation function처리 단계인 Sigmoid 처리를 해준다
- Sigmoid 처리값이 a 이며 model 밖으로 나가서 Y(예측값)이 된다
3. model 밖
- (Y 예측값으로 T와 비교하는) logistic의 loss함수인 Cross Entropy를 계산
- 최적이면 학습종료 / 최적이 아니면 Weight, bias update (편미분)
입력변수가 2개인 Multinomial calssification
trainning data → model
model
(1) input layer node 각각에 x값을 받는다
(2) x와 w를 각각 곱해서 output layer로 간다
(3) output layer에서 각각 b를 더해 각각 softmax처리를 해 y를 반출
(4) 반출한 y와 t를 cross Entropy해서 비교해서 완료할지 갱신할지 결정
tf2.0 들어오면서 model, input output layer, node, cross Entropy만 설정하면 된다
# Keras를 이용해서 간단한 simple linear regression을 구현해 보아요!
# 독립변수가 1개
# x_data = [1,2,3,4,5]
# t_data = [3,5,7,9,11]
# 학습이 끝난 후 11에 대한 예측값은? 23
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense #Flatten:평평한 이라는 뜻으로 input 할때 1차원으로 들어가 편다는 의미
from tensorflow.keras.optimizers import SGD, Adam # Stochastic gradient algoritm인데 gradiant보다 빠르다,
# Stochastic gradient algoritm 는 learning rate에 민감하여 웬만하면 보통 Adam을 이용
# training data set
x_data = np.array([1,2,3,4,5]).reshape(-1,1)
t_data = np.array([3,5,7,9,11]).reshape(-1,1)
# 1. model을 생성
model = Sequential()
# 2. layer를 추가
model.add(Flatten(input_shape=(1,))) #input layer
# Flatten 안에 input_shape=이 들어가야 하며 튜플형태로 독립변수의 모양(숫자)를 넣어줘야한다
model.add(Dense(1, activation='linear')) # output layer
# Dense 안에 활성화 함수를 줘야한다
# 3. model compile (설정을 잡아요!)
model.compile(optimizer=SGD(learning_rate=1e-2),
loss='mse') #mean Squeard Error
# compile안에 optimizer=(어떤 opitmizer gradiant algorithm)
# optimizer= 안에 learning_rate를 설정
# compile안에 loss방식도 넣어줘야한다
# 4. 학습
model.fit(x_data,
t_data,
epochs=1000,
verbose=1)
# verbose=0 : lossfuntion 을 보여주는 방식?
# epochs=1000 : 몇번 반복할거냐
# 5. Evaluation(평가)
model.evaluate(x_data, t_data)
# 6. Prediction
result = model.predict([[11]])
print(result)
# 7. 모델 저장
model.save('/content/drive/MyDrive/융복합 프로젝트형 AI 서비스 개발(2021.06)/09월/10일(금요일)/MyLinearModel.h5')
'ai > Machine Learning' 카테고리의 다른 글
ai 단어 (0) | 2021.09.13 |
---|---|
KNN ( K - Nearest Neighbor ) (0) | 2021.09.11 |
MNIST(Multinomial classification)/model평가 (0) | 2021.09.10 |
Multinomial classification(다중분류) (0) | 2021.09.09 |
Regulerization(규제) (0) | 2021.09.08 |