sequential API
, Functional API
, Model subclassing API
가 있다Sequential API
를 이용하는 법
#텐서플로우에서 케라스를 사용하는 코드
from tensorflow.keras import models, Dense
model = tf.keras.sequential()
계층(layer)
을 만든다.y=wx+b
의 계산을 하기 위해서는 딥러닝 기본층인 밀집층(은닉층
을 사용한다. 밀집층
은 입력과 츨력을 연결해주고, 입력과 출력을 각각 연결하는 가중치를 포함하고 있다.model.add(Dense(4,activation="sigmoid", input_shape(4,), weights=(w,b), name="dense1"))
❗ 한계
(2) Functional API
를 이용하는 방법
Functional API
는 앞서 말한 Sequential API
의 한계를 극복할 수 있다.1) Functional API
와 Sequential API
차이
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import model
inputs = Input(shape=(5,)
x = Dense(8, activation="relu")(inputs)
x = Dense(4, activation="relu")(x)
x = Dense(1, activation="softmax")(x)
model = Model(inputs, x)
(3) Model Subclassing API
를 이용하는 방법
옵티마이저 (optimaizer)
: 데이터와 손실함수를 바탕으로 모델의 업데이트 방법을 결정한다.손실함수(loss function)
: 훈련하는 동안 출력과 실제 값 사이의 오차를 측정한다지표(metrics)
: 훈련과 테스트 단계를 모니터링하여 모델의 성능을 측정model.compile(optimizer='adam', loss='sparse_categorical_crossentropy',metrics = ['accuracy'])
optimizer='adam'
: 아담 옵티마이저 사용loss='sparse_categorical_crossentropy'
: sparse_categorical_crossentropy는 다중 분류에서 사용되는 손실함수metrics = ['accuracy']
: accuracy는 훈련에 대한 정확도를 나타내는 것. 1에 수렴할수록 좋은 모델.
모델훈련 예시코드
model.fix(x_train, y_train, epochs=10, batch_size=100, validation_data=(x_test,y_test), verbose=2)
x_train'
: 입력데이터y_train'
: 정답 데이터셋epochs=10
: 학습데이터 10번 반복batch_size=100
: 한번에 학습할 때 사용하는 데이터 개수(100개)validation_data=(x_test,y_test)
: 테스트 데이터를 나타내는 것. 데스트 데이터를 사용하면 각 에포크마다 정확도도 함께 출력. 이 정확도는 훈련이 잘되는지 확인할 수 있을 뿐 실제로 모델이 테스트 데이터를 학습시키진 않음verbose=2
: 학습 진행상황을 보여줄지 지정하는 것으로 1값을 설정하면 학습 진행 상황을 볼 수 있음
모델평가 예시코드
model.evaluate(x_test,y_test, batch_size=40)
x_test
: 검증데이터y_test'
: 정답 데이터셋batch_size=100
: 한번에 학습할 때 사용하는 데이터 개수(32개)
예시코드
log_dir="logs/fit/"
tensorboard_callback = tf.keras.calback.TensorBoard(log_dir, histogram_freq=1)
model.fit(x=x_train,
y=y_train,
epochs=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback]}
tensorboard_callback의 각 파라미터는 아래와 같다
tf.keras.calback.TensorBoard(log_dir, histogram_freq=1)
- log_dir
: 로그가 저장될 디렉토리 위치 지정
- histogram_freq=1
: 모든 에포크마다 히스토그램 계산을 활성화한다. 기본값은 0으로 히스토그램 계산이 비활성화 돼 있음
텐서보드 사용을 위해서는 콜백함수를 만들고 앞서 만든 log_dir변수를 넣어준다. 마지막으로 model.fit메서드의 마지막 파라미터로 callback에 tensorboard_callback을 넣은 후 cmd 창에 아래 명령어를 입력하면 텐서보드가 실행된다.
tensorboard --logdir=./logs/fit/
예시코드
model.predict(y_test)