如何在 Tensorflow 深度学习期间测量每批次的训练时间?
How to measure training time per batches during Deep Learning in Tensorflow?
我想测量 Tensorflow 深度学习期间每批次的训练时间。
有几种方法可以衡量每个时期的训练时间,但我找不到如何衡量每个批次的训练时间。
我试过 Tensorboard,但我不知道如何在 Tensorboard 回调中添加某种 'execution time' 标量。
我也尝试覆盖函数 'train_step' 但它没有按我想要的方式工作。
您可以通过创建 keras 自定义回调来执行此操作。下面的代码将打印出处理每个批次所需的时间、该批次的训练精度和该批次的损失
class batch_timer(keras.callbacks.Callback):
def __init__(self ):
super(batch_timer, self).__init__()
def on_train_batch_begin(self, batch, logs=None):
self.start_time=time.time()
def on_train_batch_end(self, batch, logs=None):
stop_time=time.time()
duration =stop_time-self.start_time
acc=logs.get('accuracy')* 100 # get training accuracy
loss=logs.get('loss')
msg='processing batch {0:6s} duration= {1:12.4f} accuracy= {2:8.3f} loss: {3:8.5f}'.format(str(batch), duration, acc, loss)
print(msg )
现在您将获得大量数据。当您 运行 model.fit 包含
history=model.fit(etc.... ,verbose=0, callbacks=[batch_timer()]
我设置了 verbose=0,因为如果你不设置,打印输出会有点乱,因为 model.fit
打印被回调打印弄乱了
我想测量 Tensorflow 深度学习期间每批次的训练时间。 有几种方法可以衡量每个时期的训练时间,但我找不到如何衡量每个批次的训练时间。
我试过 Tensorboard,但我不知道如何在 Tensorboard 回调中添加某种 'execution time' 标量。
我也尝试覆盖函数 'train_step' 但它没有按我想要的方式工作。
您可以通过创建 keras 自定义回调来执行此操作。下面的代码将打印出处理每个批次所需的时间、该批次的训练精度和该批次的损失
class batch_timer(keras.callbacks.Callback):
def __init__(self ):
super(batch_timer, self).__init__()
def on_train_batch_begin(self, batch, logs=None):
self.start_time=time.time()
def on_train_batch_end(self, batch, logs=None):
stop_time=time.time()
duration =stop_time-self.start_time
acc=logs.get('accuracy')* 100 # get training accuracy
loss=logs.get('loss')
msg='processing batch {0:6s} duration= {1:12.4f} accuracy= {2:8.3f} loss: {3:8.5f}'.format(str(batch), duration, acc, loss)
print(msg )
现在您将获得大量数据。当您 运行 model.fit 包含
history=model.fit(etc.... ,verbose=0, callbacks=[batch_timer()]
我设置了 verbose=0,因为如果你不设置,打印输出会有点乱,因为 model.fit 打印被回调打印弄乱了