01. NN Regresison

(참고) udemy - TF Developer in 2022

Contents

  1. Steps in modeling with TF
  2. Keras Sequential API
  3. Evaluating a model
  4. Tracking Experiments
  5. Saving a model
  6. Loading a model


(1) Steps in modeling with TF

  1. create model ( functional or sequential API )
  2. compile model
  3. 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()