TensorFlowアドオンのコールバック:TimeStopping

TensorFlow.orgで表示 Google Colab で実行 GitHub でソースを表示{ ノートブックをダウンロード/a0}

概要

このノートブックでは、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: 11:17 - loss: 2.3041 - accuracy: 0.1406
25/938 [..............................] - ETA: 1s - loss: 1.9067 - accuracy: 0.4004
51/938 [>.............................] - ETA: 1s - loss: 1.6017 - accuracy: 0.5183
76/938 [=>............................] - ETA: 1s - loss: 1.4185 - accuracy: 0.5796
101/938 [==>...........................] - ETA: 1s - loss: 1.2900 - accuracy: 0.6209
127/938 [===>..........................] - ETA: 1s - loss: 1.1901 - accuracy: 0.6520
154/938 [===>..........................] - ETA: 1s - loss: 1.1108 - accuracy: 0.6763
180/938 [====>.........................] - ETA: 1s - loss: 1.0496 - accuracy: 0.6948
207/938 [=====>........................] - ETA: 1s - loss: 0.9967 - accuracy: 0.7106
233/938 [======>.......................] - ETA: 1s - loss: 0.9534 - accuracy: 0.7234
258/938 [=======>......................] - ETA: 1s - loss: 0.9175 - accuracy: 0.7339
283/938 [========>.....................] - ETA: 1s - loss: 0.8860 - accuracy: 0.7432
309/938 [========>.....................] - ETA: 1s - loss: 0.8567 - accuracy: 0.7518
336/938 [=========>....................] - ETA: 1s - loss: 0.8295 - accuracy: 0.7598
362/938 [==========>...................] - ETA: 1s - loss: 0.8059 - accuracy: 0.7667
388/938 [===========>..................] - ETA: 1s - loss: 0.7844 - accuracy: 0.7730
413/938 [============>.................] - ETA: 1s - loss: 0.7656 - accuracy: 0.7785
439/938 [=============>................] - ETA: 0s - loss: 0.7477 - accuracy: 0.7837
464/938 [=============>................] - ETA: 0s - loss: 0.7317 - accuracy: 0.7884
490/938 [==============>...............] - ETA: 0s - loss: 0.7163 - accuracy: 0.7929
516/938 [===============>..............] - ETA: 0s - loss: 0.7020 - accuracy: 0.7971
542/938 [================>.............] - ETA: 0s - loss: 0.6886 - accuracy: 0.8010
569/938 [=================>............] - ETA: 0s - loss: 0.6756 - accuracy: 0.8048
595/938 [==================>...........] - ETA: 0s - loss: 0.6639 - accuracy: 0.8082
621/938 [==================>...........] - ETA: 0s - loss: 0.6528 - accuracy: 0.8114
648/938 [===================>..........] - ETA: 0s - loss: 0.6419 - accuracy: 0.8146
674/938 [====================>.........] - ETA: 0s - loss: 0.6320 - accuracy: 0.8175
699/938 [=====================>........] - ETA: 0s - loss: 0.6230 - accuracy: 0.8201
725/938 [======================>.......] - ETA: 0s - loss: 0.6140 - accuracy: 0.8227
751/938 [=======================>......] - ETA: 0s - loss: 0.6055 - accuracy: 0.8252
776/938 [=======================>......] - ETA: 0s - loss: 0.5977 - accuracy: 0.8274
802/938 [========================>.....] - ETA: 0s - loss: 0.5899 - accuracy: 0.8297
828/938 [=========================>....] - ETA: 0s - loss: 0.5825 - accuracy: 0.8318
854/938 [==========================>...] - ETA: 0s - loss: 0.5754 - accuracy: 0.8339
881/938 [===========================>..] - ETA: 0s - loss: 0.5684 - accuracy: 0.8359
907/938 [============================>.] - ETA: 0s - loss: 0.5619 - accuracy: 0.8378
934/938 [============================>.] - ETA: 0s - loss: 0.5554 - accuracy: 0.8397
938/938 [==============================] - 3s 3ms/step - loss: 0.5543 - accuracy: 0.8400 - val_loss: 0.1561 - val_accuracy: 0.9564
Epoch 2/100

  1/938 [..............................] - ETA: 2s - loss: 0.0763 - accuracy: 0.9688
28/938 [..............................] - ETA: 1s - loss: 0.1442 - accuracy: 0.9578
53/938 [>.............................] - ETA: 1s - loss: 0.1548 - accuracy: 0.9550
79/938 [=>............................] - ETA: 1s - loss: 0.1597 - accuracy: 0.9538
105/938 [==>...........................] - ETA: 1s - loss: 0.1627 - accuracy: 0.9528
132/938 [===>..........................] - ETA: 1s - loss: 0.1651 - accuracy: 0.9521
158/938 [====>.........................] - ETA: 1s - loss: 0.1665 - accuracy: 0.9517
184/938 [====>.........................] - ETA: 1s - loss: 0.1678 - accuracy: 0.9514
211/938 [=====>........................] - ETA: 1s - loss: 0.1690 - accuracy: 0.9511
238/938 [======>.......................] - ETA: 1s - loss: 0.1700 - accuracy: 0.9508
264/938 [=======>......................] - ETA: 1s - loss: 0.1707 - accuracy: 0.9506
291/938 [========>.....................] - ETA: 1s - loss: 0.1715 - accuracy: 0.9503
318/938 [=========>....................] - ETA: 1s - loss: 0.1722 - accuracy: 0.9501
343/938 [=========>....................] - ETA: 1s - loss: 0.1727 - accuracy: 0.9500
370/938 [==========>...................] - ETA: 1s - loss: 0.1730 - accuracy: 0.9499
397/938 [===========>..................] - ETA: 1s - loss: 0.1733 - accuracy: 0.9498
423/938 [============>.................] - ETA: 0s - loss: 0.1735 - accuracy: 0.9498
450/938 [=============>................] - ETA: 0s - loss: 0.1736 - accuracy: 0.9497
477/938 [==============>...............] - ETA: 0s - loss: 0.1736 - accuracy: 0.9497
503/938 [===============>..............] - ETA: 0s - loss: 0.1736 - accuracy: 0.9497
529/938 [===============>..............] - ETA: 0s - loss: 0.1736 - accuracy: 0.9497
556/938 [================>.............] - ETA: 0s - loss: 0.1735 - accuracy: 0.9497
583/938 [=================>............] - ETA: 0s - loss: 0.1735 - accuracy: 0.9498
609/938 [==================>...........] - ETA: 0s - loss: 0.1734 - accuracy: 0.9498
634/938 [===================>..........] - ETA: 0s - loss: 0.1734 - accuracy: 0.9498
660/938 [====================>.........] - ETA: 0s - loss: 0.1733 - accuracy: 0.9498
686/938 [====================>.........] - ETA: 0s - loss: 0.1732 - accuracy: 0.9498
713/938 [=====================>........] - ETA: 0s - loss: 0.1730 - accuracy: 0.9499
740/938 [======================>.......] - ETA: 0s - loss: 0.1728 - accuracy: 0.9499
766/938 [=======================>......] - ETA: 0s - loss: 0.1725 - accuracy: 0.9500
791/938 [========================>.....] - ETA: 0s - loss: 0.1723 - accuracy: 0.9501
816/938 [=========================>....] - ETA: 0s - loss: 0.1721 - accuracy: 0.9501
844/938 [=========================>....] - ETA: 0s - loss: 0.1719 - accuracy: 0.9502
870/938 [==========================>...] - ETA: 0s - loss: 0.1717 - accuracy: 0.9502
896/938 [===========================>..] - ETA: 0s - loss: 0.1715 - accuracy: 0.9503
922/938 [============================>.] - ETA: 0s - loss: 0.1712 - accuracy: 0.9503
938/938 [==============================] - 2s 2ms/step - loss: 0.1711 - accuracy: 0.9504 - val_loss: 0.1126 - val_accuracy: 0.9669
Timed stopping at epoch 2 after training for 0:00:05
<tensorflow.python.keras.callbacks.History at 0x7fb6af066240>