TensorFlow 애드온 콜백: TimeStopping

TensorFlow.org에서 보기 Google Colab에서 실행하기 GitHub에서 소스 보기 노트북 다운로드하기

개요

이 노트북은 TensorFlow 애드온에서 TimeStopping 콜백을 사용하는 방법을 보여줍니다.

설정

pip install -q -U tensorflow-addons
import tensorflow_addons as tfa

from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten

데이터 가져오기 및 정규화

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# normalize data
x_train, x_test = x_train / 255.0, x_test / 255.0

간단한 MNIST CNN 모델 빌드하기

# build the model using the Sequential API
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='adam',
              loss = 'sparse_categorical_crossentropy',
              metrics=['accuracy'])

간단한 TimeStopping 사용법

# initialize TimeStopping callback 
time_stopping_callback = tfa.callbacks.TimeStopping(seconds=5, verbose=1)

# train the model with tqdm_callback
# make sure to set verbose = 0 to disable
# the default progress bar.
model.fit(x_train, y_train,
          batch_size=64,
          epochs=100,
          callbacks=[time_stopping_callback],
          validation_data=(x_test, y_test))
Epoch 1/100
1/938 [..............................] - ETA: 0s - loss: 2.4094 - accuracy: 0.0781
27/938 [..............................] - ETA: 1s - loss: 1.5353 - accuracy: 0.5463
55/938 [>.............................] - ETA: 1s - loss: 1.1143 - accuracy: 0.6793
83/938 [=>............................] - ETA: 1s - loss: 0.9178 - accuracy: 0.7327
111/938 [==>...........................] - ETA: 1s - loss: 0.8035 - accuracy: 0.7659
139/938 [===>..........................] - ETA: 1s - loss: 0.7273 - accuracy: 0.7878
166/938 [====>.........................] - ETA: 1s - loss: 0.6715 - accuracy: 0.8040
194/938 [=====>........................] - ETA: 1s - loss: 0.6271 - accuracy: 0.8185
222/938 [======>.......................] - ETA: 1s - loss: 0.5936 - accuracy: 0.8275
249/938 [======>.......................] - ETA: 1s - loss: 0.5703 - accuracy: 0.8339
276/938 [=======>......................] - ETA: 1s - loss: 0.5484 - accuracy: 0.8414
302/938 [========>.....................] - ETA: 1s - loss: 0.5309 - accuracy: 0.8470
329/938 [=========>....................] - ETA: 1s - loss: 0.5115 - accuracy: 0.8525
357/938 [==========>...................] - ETA: 1s - loss: 0.4955 - accuracy: 0.8570
385/938 [===========>..................] - ETA: 1s - loss: 0.4795 - accuracy: 0.8616
413/938 [============>.................] - ETA: 0s - loss: 0.4662 - accuracy: 0.8654
442/938 [=============>................] - ETA: 0s - loss: 0.4528 - accuracy: 0.8689
470/938 [==============>...............] - ETA: 0s - loss: 0.4427 - accuracy: 0.8719
498/938 [==============>...............] - ETA: 0s - loss: 0.4310 - accuracy: 0.8751
527/938 [===============>..............] - ETA: 0s - loss: 0.4222 - accuracy: 0.8780
555/938 [================>.............] - ETA: 0s - loss: 0.4132 - accuracy: 0.8808
583/938 [=================>............] - ETA: 0s - loss: 0.4071 - accuracy: 0.8824
611/938 [==================>...........] - ETA: 0s - loss: 0.4022 - accuracy: 0.8840
638/938 [===================>..........] - ETA: 0s - loss: 0.3948 - accuracy: 0.8861
666/938 [====================>.........] - ETA: 0s - loss: 0.3875 - accuracy: 0.8883
695/938 [=====================>........] - ETA: 0s - loss: 0.3808 - accuracy: 0.8901
723/938 [======================>.......] - ETA: 0s - loss: 0.3759 - accuracy: 0.8914
751/938 [=======================>......] - ETA: 0s - loss: 0.3695 - accuracy: 0.8934
778/938 [=======================>......] - ETA: 0s - loss: 0.3657 - accuracy: 0.8947
806/938 [========================>.....] - ETA: 0s - loss: 0.3603 - accuracy: 0.8962
834/938 [=========================>....] - ETA: 0s - loss: 0.3557 - accuracy: 0.8975
862/938 [==========================>...] - ETA: 0s - loss: 0.3514 - accuracy: 0.8986
889/938 [===========================>..] - ETA: 0s - loss: 0.3467 - accuracy: 0.8999
918/938 [============================>.] - ETA: 0s - loss: 0.3423 - accuracy: 0.9012
938/938 [==============================] - 2s 2ms/step - loss: 0.3393 - accuracy: 0.9019 - val_loss: 0.1657 - val_accuracy: 0.9516
Epoch 2/100

  1/938 [..............................] - ETA: 0s - loss: 0.0782 - accuracy: 1.0000
30/938 [..............................] - ETA: 1s - loss: 0.1704 - accuracy: 0.9443
57/938 [>.............................] - ETA: 1s - loss: 0.1678 - accuracy: 0.9482
86/938 [=>............................] - ETA: 1s - loss: 0.1704 - accuracy: 0.9499
114/938 [==>...........................] - ETA: 1s - loss: 0.1744 - accuracy: 0.9489
142/938 [===>..........................] - ETA: 1s - loss: 0.1754 - accuracy: 0.9480
170/938 [====>.........................] - ETA: 1s - loss: 0.1756 - accuracy: 0.9483
197/938 [=====>........................] - ETA: 1s - loss: 0.1754 - accuracy: 0.9475
224/938 [======>.......................] - ETA: 1s - loss: 0.1739 - accuracy: 0.9479
251/938 [=======>......................] - ETA: 1s - loss: 0.1730 - accuracy: 0.9486
278/938 [=======>......................] - ETA: 1s - loss: 0.1758 - accuracy: 0.9477
306/938 [========>.....................] - ETA: 1s - loss: 0.1742 - accuracy: 0.9485
334/938 [=========>....................] - ETA: 1s - loss: 0.1748 - accuracy: 0.9483
361/938 [==========>...................] - ETA: 1s - loss: 0.1750 - accuracy: 0.9486
388/938 [===========>..................] - ETA: 1s - loss: 0.1748 - accuracy: 0.9492
416/938 [============>.................] - ETA: 0s - loss: 0.1741 - accuracy: 0.9495
443/938 [=============>................] - ETA: 0s - loss: 0.1748 - accuracy: 0.9493
471/938 [==============>...............] - ETA: 0s - loss: 0.1735 - accuracy: 0.9495
498/938 [==============>...............] - ETA: 0s - loss: 0.1732 - accuracy: 0.9495
526/938 [===============>..............] - ETA: 0s - loss: 0.1726 - accuracy: 0.9494
554/938 [================>.............] - ETA: 0s - loss: 0.1721 - accuracy: 0.9497
581/938 [=================>............] - ETA: 0s - loss: 0.1732 - accuracy: 0.9494
608/938 [==================>...........] - ETA: 0s - loss: 0.1720 - accuracy: 0.9497
635/938 [===================>..........] - ETA: 0s - loss: 0.1713 - accuracy: 0.9499
662/938 [====================>.........] - ETA: 0s - loss: 0.1700 - accuracy: 0.9503
690/938 [=====================>........] - ETA: 0s - loss: 0.1688 - accuracy: 0.9506
718/938 [=====================>........] - ETA: 0s - loss: 0.1682 - accuracy: 0.9507
746/938 [======================>.......] - ETA: 0s - loss: 0.1678 - accuracy: 0.9508
773/938 [=======================>......] - ETA: 0s - loss: 0.1666 - accuracy: 0.9511
801/938 [========================>.....] - ETA: 0s - loss: 0.1664 - accuracy: 0.9511
828/938 [=========================>....] - ETA: 0s - loss: 0.1659 - accuracy: 0.9514
855/938 [==========================>...] - ETA: 0s - loss: 0.1660 - accuracy: 0.9513
883/938 [===========================>..] - ETA: 0s - loss: 0.1663 - accuracy: 0.9511
911/938 [============================>.] - ETA: 0s - loss: 0.1660 - accuracy: 0.9513
938/938 [==============================] - 2s 2ms/step - loss: 0.1658 - accuracy: 0.9514 - val_loss: 0.1171 - val_accuracy: 0.9670
Epoch 3/100

  1/938 [..............................] - ETA: 0s - loss: 0.2316 - accuracy: 0.9375
29/938 [..............................] - ETA: 1s - loss: 0.1148 - accuracy: 0.9634
56/938 [>.............................] - ETA: 1s - loss: 0.1192 - accuracy: 0.9618
83/938 [=>............................] - ETA: 1s - loss: 0.1247 - accuracy: 0.9603
110/938 [==>...........................] - ETA: 1s - loss: 0.1209 - accuracy: 0.9624
138/938 [===>..........................] - ETA: 1s - loss: 0.1227 - accuracy: 0.9612
166/938 [====>.........................] - ETA: 1s - loss: 0.1278 - accuracy: 0.9607
194/938 [=====>........................] - ETA: 1s - loss: 0.1288 - accuracy: 0.9605
222/938 [======>.......................] - ETA: 1s - loss: 0.1302 - accuracy: 0.9602
250/938 [======>.......................] - ETA: 1s - loss: 0.1294 - accuracy: 0.9609
278/938 [=======>......................] - ETA: 1s - loss: 0.1287 - accuracy: 0.9608
306/938 [========>.....................] - ETA: 1s - loss: 0.1295 - accuracy: 0.9602
334/938 [=========>....................] - ETA: 1s - loss: 0.1286 - accuracy: 0.9608
363/938 [==========>...................] - ETA: 1s - loss: 0.1267 - accuracy: 0.9616
391/938 [===========>..................] - ETA: 0s - loss: 0.1250 - accuracy: 0.9622
418/938 [============>.................] - ETA: 0s - loss: 0.1252 - accuracy: 0.9620
445/938 [=============>................] - ETA: 0s - loss: 0.1241 - accuracy: 0.9625
472/938 [==============>...............] - ETA: 0s - loss: 0.1240 - accuracy: 0.9627
499/938 [==============>...............] - ETA: 0s - loss: 0.1240 - accuracy: 0.9627
526/938 [===============>..............] - ETA: 0s - loss: 0.1238 - accuracy: 0.9629
554/938 [================>.............] - ETA: 0s - loss: 0.1236 - accuracy: 0.9629
582/938 [=================>............] - ETA: 0s - loss: 0.1232 - accuracy: 0.9630
610/938 [==================>...........] - ETA: 0s - loss: 0.1233 - accuracy: 0.9631
638/938 [===================>..........] - ETA: 0s - loss: 0.1226 - accuracy: 0.9633
665/938 [====================>.........] - ETA: 0s - loss: 0.1226 - accuracy: 0.9633
693/938 [=====================>........] - ETA: 0s - loss: 0.1234 - accuracy: 0.9632
721/938 [======================>.......] - ETA: 0s - loss: 0.1234 - accuracy: 0.9634
748/938 [======================>.......] - ETA: 0s - loss: 0.1229 - accuracy: 0.9634
776/938 [=======================>......] - ETA: 0s - loss: 0.1221 - accuracy: 0.9636
804/938 [========================>.....] - ETA: 0s - loss: 0.1211 - accuracy: 0.9638
832/938 [=========================>....] - ETA: 0s - loss: 0.1205 - accuracy: 0.9639
859/938 [==========================>...] - ETA: 0s - loss: 0.1210 - accuracy: 0.9639
886/938 [===========================>..] - ETA: 0s - loss: 0.1217 - accuracy: 0.9637
913/938 [============================>.] - ETA: 0s - loss: 0.1220 - accuracy: 0.9636
938/938 [==============================] - 2s 2ms/step - loss: 0.1220 - accuracy: 0.9636 - val_loss: 0.0951 - val_accuracy: 0.9723
Timed stopping at epoch 3 after training for 0:00:05
<tensorflow.python.keras.callbacks.History at 0x7ff8b4a0a7b8>