tensor flow 2.0 ver

2021. 9. 10. 01:09ai/Machine Learning

728x90

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