01. NN Regresison
(참고) udemy - TF Developer in 2022
Contents
- Steps in modeling with TF
- Keras Sequential API
- Evaluating a model
- Tracking Experiments
- Saving a model
- Loading a model
(1) Steps in modeling with TF
- create model ( functional or sequential API )
- compile model
- fit a model
(2) Keras Sequential API
TF 2.70 + 버전 : input shape
-
( n, 1 ) …. (O)
-
( n, ) ….. (X)
\(\rightarrow\) tf.exand_dims(X, axis=-1)
해줘야!
tf.random.set_seed(42)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1)
])
model.compile(loss=tf.keras.losses.mae,
optimizer=tf.keras.optimizers.SGD(),
metrics=["mae"])
model.fit(tf.expand_dims(X, axis=-1), y, epochs=5)
X_new = [17.0]
model.predict(X_new)
tf 뒤에 keras를 붙이는 이유는?
-
keras : DL 모델을 쉽게 디자인하기 위한 API
-
tf 2.0 버전 이후, keras의 기능이 tf의 라이브러리에 통합됨!
(3) Evaluating a model
NN을 build할 때, 아래의 작업을 반복하게 될 것!
- 모델 build
- 모델 evaluate
- 모델 build
- 모델 evaluate
- …
key point : visualize
무엇을 시각화?
- 데이터
-
모델
- 모델의 학습
- 모델의 예측
(1) 데이터
- 생략
(2) 모델
- layers, shape 등!
- 주의할 점 : 모델을 우선 빌드 & 컴파일 해야!
- 담고 있는 정보
- (1) 총 파라미터 개수
- (2) 학습 가능한 파라미터 개수
- (3) 학습 불가능한 파라미터 개수
model.summary()
Model: "sequential_8"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_8 (Dense) (None, 1) 2
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_________________________________________________________________
모델의 구조를 보다 시각적으로 확인하려면..
from tensorflow.keras.utils import plot_model
plot_model(model, show_shapes=True)
(3) 모델의 학습
- 생략
(4) 모델의 예측
- 여기서 평가하는데에 사용되는 지표는, 위에서
compile
할 때 지정해줬던 metric
model.evaluate(X_test, y_test)
- 그 밖에도, 따로 지정한 메트릭으로 확인할 수 있다
y_preds = model.predict(X_test)
mae = tf.metrics.mean_absolute_error(y_true=y_test,
y_pred=y_preds.squeeze())
mse1 = tf.metrics.mean_squared_error(y_true=y_test,
y_pred=y_preds.squeeze())
mse2 = tf.reduce_mean(tf.abs(y_test-y_preds.squeeze()))
(4) Tracking Experiments
track your model experiments! which model is good?
- TensorBoard
- WandB ( Weights & Biases )
(5) Saving a model
함수 : model.save()
저장하는 2가지 방식
- (1)
SavedModel
포맷 ( default ) - (2)
HDF5
포맷
( 참고 : https://www.tensorflow.org/tutorials/keras/save_and_load?hl=ko )
HDF5와 SavedModel의 주요 차이점은 HDF5는 객체 구성을 사용하여 모델 아키텍처를 저장하는 반면, SavedModel은 실행 그래프를 저장한다는 것입니다. 따라서 SavedModel은 원본 코드 없이도 서브클래싱된 모델 및 사용자 지정 레이어와 같은 사용자 지정 객체를 저장할 수 있습니다.
(1)번 방법
- pb파일이 2개 생성될 것
model.save('mymodel')
(2)번 방법
- h5파일이 1개 생성될 것
model.save('mymodel.h5')
(6) Loading a model
위의 두 방법을 통해서 저장해도, 불러오는 방식은 동일
model = tf.keras.models.load_model('mymodel')
model = tf.keras.models.load_model('mymodel.h5')
model.summary()