tensorflow 모델 학습 시간 보기
model.fit 에서 나오는 ETA 는 estimated time of arrival로 학습시키는 동안 마다 계산되어 보여진다. ETA는 1 epoch 의 학습시간을 예상해서 보여준다. (즉, 모델을 학습시킬 때 나오는 ETA는 한 epoch 가 돌기까지 남은 시간을 보여준다)
ETA는 정확히 학습을 완료하는데 (모든 epoch를 다 도는데) 걸리는 시간을 알려준다고 볼 수 없음
모델을 학습시키는데 걸리는 시간 보기
1. TensorFlow TQDM 사용하기
www.tensorflow.org/addons/tutorials/tqdm_progress_bar
아나콘다 가상환경에서 pip install tensorflow-addons == (버전) 으로 설치해준다.
주의해야할 점은 tensorflow 버전과 python 버전을 고려해서 tensorflow-addons를 깔아줘야한다는 점!
설치 후에는 튜토리얼을 따라서
import tensorflow as tf
import tensorflow_addons as tfa
import tqdm
모듈들을 import 해준다음, tqdm_callback 변수를 만들어 주고
tqdm_callback = tfa.callbacks.TQDMProgressBar()
model.fit() 안에 callbacks=[tqdm_callback]를 넣어주면 된다. verbose=0를 넣어주면 원래 fit를 돌리 때 나오는 progress bar (with ETA)를 안 보이게 할 수 있다.
#예시
model.fit(x_train, y_train,
batch_size=64,
epochs=10,
verbose=0,
callbacks=[tqdm_callback],
validation_data=(x_test, y_test))
그러면 밑에 사진처럼 tqdm progress bar(ETA = batch 하나가 도는데 걸린 시간) 가 뜬다. (verbose를 설정 안해줘서 tqdm과 default progress bar가 함께 떴다)
2. python datetime module
import datetime를 해주고
start = datetime.datetime.now() 를 코드 맨 윗줄 또는 시간을 재기 시작할 지점에 넣어준다.
시간 재기를 끝낼 시점에
end = datetime.datetime.now() 를 써주고
끝낸 시간과 시작한 시간을 빼주면 시간이 얼마나 지났는지 계산할 수 있다.
time = end - start
그리고 print()를 써서 출력해주면 된다.
print("처리시간: ", time)
3. python time module 를 사용한 클래스 구현 (epoch 별 걸린 시간 계산)
위에 링크에 설명된대로,
import time
class TimeHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.times = []
def on_epoch_begin(self, epoch, logs={}):
self.epoch_time_start = time.time()
def on_epoch_end(self, epoch, logs={}):
self.times.append(time.time() - self.epoch_time_start)
코드를 fit 전에 넣어준 후,
TimeHistory() 를 변수에 넣어주고 fit 할 때 callbacks에 추가해주면 된다.
time_callback = TimeHistory()
model.fit(x_train, y_train,
batch_size=64,
epochs=3,
verbose=0,
callbacks=[time_callback],
validation_data=(x_test, y_test))
그리고 time_callback.times를 출력해주면 epoch 마다 걸린 시간을 리스트 형식으로 반환해서 보여준다.
(밑에 예제는 epoch를 3번 준 경우)
print(time_callback.times)
'''
output
[4.531331300735474, 4.308278322219849, 4.505300283432007]
'''
'AI > Self-Study' 카테고리의 다른 글
Keras : ImageDataGenerator 대신에 tf.data로 빠르게 학습하기 1 (0) | 2021.04.12 |
---|---|
Keras에서 predict와 predict_generator 가 다른 값을 내는 경우 (Image Data Generator) (0) | 2021.04.09 |
ArcFace - ResNetFace / SE-LResNet50E-IR (2) | 2021.04.09 |
K-Fold Cross Validation 딥러닝 (Keras, Image Data Generator) (0) | 2021.04.08 |
EfficientNet 모델 구조 (1) | 2021.01.12 |
댓글
이 글 공유하기
다른 글
-
Keras에서 predict와 predict_generator 가 다른 값을 내는 경우 (Image Data Generator)
Keras에서 predict와 predict_generator 가 다른 값을 내는 경우 (Image Data Generator)
2021.04.09 -
ArcFace - ResNetFace / SE-LResNet50E-IR
ArcFace - ResNetFace / SE-LResNet50E-IR
2021.04.09 -
K-Fold Cross Validation 딥러닝 (Keras, Image Data Generator)
K-Fold Cross Validation 딥러닝 (Keras, Image Data Generator)
2021.04.08 -
EfficientNet 모델 구조
EfficientNet 모델 구조
2021.01.12