TensorFlow 2.x에서 공식적이고 유일한 High-Level API
장점
직관적인 Keras의 API를 통해 ANN, CNN, RNN 모델, 혹은 다양한 딥러닝 모델을 몇 줄의 코드만으로 쉽게 구축할 수 있다.
모듈을 조합하기만 하면 새로운 딥러닝 모델을 쉽게 만들어 학습시킬 수 있다.
Model은 각 Layer를 포함하고 있는 인공 신경망 자체를 나타냄.
# 모델 생성
model = Sequential()
# Layer 추가
model.add(...)
model.add(...)
.
.
.
# 손실함수 지정, 옵티마이저 지정
model.compile(...)
# 학습 진행(앞 과정 반복)
model.fit(...)
Compile과 fit 메서드를 통해서 신경망의 손실함수가 최소가 될 떄까지 반복하면서 최적의 weight(가중치)와 bias를 구한다!
전체 데이터로부터 train data
validation data
test data
등을 생성.
데이터 생성
tain data
: 학습에 사용되는 데이터. weight와 bias를 최적화하기 위해 사용
validation data
: 1 epoch마다 과적합(overfitteing)을 확인하기 위해 사용. (학습동안)
test data
: 학습 후에(최적의 weight와 Bias가 결정된 상황) 정확도를 평가하거나 임의의 입력에 대한 결과를 예측하기 위해 사용.
즉 train data
validation data
는 학습 도중, test data
학습 끝나고 사용되는 Data.
# 모델 생성
model = Sequential()
# Layer 추가
model.add(...)
...
model.add(...)
Flatten
: 입력층. 입력으로 들어오는 다차원 Data를 1차원으로 정렬하기 위해 사용되는 Layer.
Dense
: 은닉층. 각 Layer의 입력과 출력 사이에 있는 모든 노드가 서로 연결되어 있는 완전 연결 층(FC)를 나타냄.Dense의 첫번째 인자 = 출력 노드 수
노드의 활성화 함수는
activation='...'
로 나타낼 수 있음`
대표적인 활성화 함수
선형회귀 문제에서
linear
,일반적인 classification 경우에는
sigmoid
softmax
relu
tanh
등이 데이터에 따라 다양하게 사용.
# 정통 과정
model.add(Flatten(input_shpe=(1,))
model.add(Dense(2, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
보통 아래와 같이 Dense
한 줄 코드로 사용하는 경우가 많음.
# 일반적으로 많이 사용하는 모델 구축 방법
# Dense 계층을 첫번째로 바로 사용하는 방법
model.add(Dense(2, activation='sigmoid', input_shape=(1,)))
model.compile(...)
model.fit(...)
model.evalutate(...)
model.predict(...)
model.save(...)
https://www.youtube.com/watch?v=Ke70Xxj2EJw&list=PLS8gIc2q83OhM0RTktKDitgZGX5dHo7Vs&index=6