오답노트

[Keras] Sequential API 본문

Python/DL

[Keras] Sequential API

권멋져 2022. 9. 13. 21:24

Keras

케라스는 원래 독자적인 딥러닝 라이브러리였다. 하지만 케라스의 창시자가 구글에 입사하게 되면서 텐서플로우에서 케라스 라이브러리를 제공하게 되었다.

 

Sequential API & Functional API

Sequential API는 레이어별로 모델을 만들 수 있고, 사용하기가 쉽다. 하지만, 레이어의 공유나 레이어의 분기는 불가능하다. 또한 여러 입력 또는 출력을 가질 수 없다.

 

Functional API는 Sequential API보다 더 유연하게 사용할 수 있다. 계층의 분기 또는 공유가 허용된다. 또한 여러 입력 또는 출력을 가질 수 있다. 따라서 좀 더 복잡한 모델을 만드는데 도움이된다.

 

Sequential API 실습

Linear Regressoin

# 라이브러리 호출
import tensorflow as tf
from tensorflow import keras

import numpy as np

# 데이터 생성
y_lst = [x*2 + 1 for x in range(0,11)]

x = np.array(range(0,11))
y = np.array(y_lst)

print(x) # [ 0  1  2  3  4  5  6  7  8  9 10]
print(y) # [ 1  3  5  7  9 11 13 15 17 19 21]

print('shape of x : ',x.shape) # shape of x :  (11,)
print('shape of y : ',y.shape) # shape of y :  (11,)

'''
모델링
'''

# 케라스 세션 클리어
keras.backend.clear_session()

#모델 선언
model = keras.models.Sequential()

#레이어 추가
model.add(keras.layers.Input(shape=(1,)))
model.add(keras.layers.Dense(1))

#모델 컴파일
model.compile(loss = 'mse' , optimizer='adam')

#모델 학습
model.fit(x,y,epochs=10,verbose=1)

#모델 예측
print(model.predict(x).reshape(-1))
# [0.0099975  0.65813625 1.306275   1.9544138  2.6025527  3.2506914 3.8988302  4.5469685  5.1951075  5.8432465  6.491385  ]
print(y)
# [ 1  3  5  7  9 11 13 15 17 19 21]

 

 

Logistic Regression

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()

x = cancer.data
y = cancer.target

print(x.shape, y.shape) # (569, 30), (569,)

#모델링
# 케라스 세션 클리어
keras.backend.clear_session()

#모델 선언
model_cancer = keras.models.Sequential()

#레이어 추가
model_cancer.add(keras.layers.Input(shape=(30,)))
model_cancer.add(keras.layers.Dense(1,activation='sigmoid'))

#모델 컴파일
model_cancer.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

#모델 학습
model_cancer.fit(x,y,epochs=10,verbose=1)

print(model_cancer.predict(x).reshape(-1)[:10]) # [0.0000000e+00 4.7399735e-35 1.6038484e-27 1.4171174e-01 1.9208638e-11 2.0547948e-07 5.4881117e-28 8.3965273e-13 1.2773573e-03 4.2186571e-06]
print(y[:10]) # [0 0 0 0 0 0 0 0 0 0]

'Python > DL' 카테고리의 다른 글

[Keras] EarlyStopping  (0) 2022.09.15
[Keras] Flatton Layer  (0) 2022.09.15
[Keras] ANN  (0) 2022.09.14
[Keras] MultiClass - SoftMax  (0) 2022.09.13
[Keras] Functional API  (0) 2022.09.13