Tensorflow 我可以写一个keras回调来记录并返回总训练时间吗?
我想记录keras模型的训练跑步持续时间。我知道我可以将每个步骤的时间乘以步骤总数,但我怀疑时间可能会因批次而异。为什么要回调?你可以这样做:Tensorflow 我可以写一个keras回调来记录并返回总训练时间吗?,tensorflow,keras,Tensorflow,Keras,我想记录keras模型的训练跑步持续时间。我知道我可以将每个步骤的时间乘以步骤总数,但我怀疑时间可能会因批次而异。为什么要回调?你可以这样做: from time import time start = time() model.fit(.....) print(time()-start) 尝试keras.callbacks.Callback()。是的,你是对的,时间会根据批量大小而变化 from timeit import default_timer as timer class Tim
from time import time
start = time()
model.fit(.....)
print(time()-start)
尝试
keras.callbacks.Callback()
。是的,你是对的,时间会根据批量大小而变化
from timeit import default_timer as timer
class TimingCallback(keras.callbacks.Callback):
def __init__(self, logs={}):
self.logs=[]
def on_epoch_begin(self, epoch, logs={}):
self.starttime = timer()
def on_epoch_end(self, epoch, logs={}):
self.logs.append(timer()-self.starttime)
cb = TimingCallback()
model = Sequential()
# Your code
model.fit(X, y, epochs=epochs, batch_size=batch_size, callbacks=[cb])
print(cb.logs)
print(sum(cb.logs))
从中了解它。酷!然而,这不也包括保存重量或训练历史所花费的时间,以及花费在耗时回调和其他不包括训练的事情上的时间吗?除此之外,这种方法过于简单且有效。为什么要使用
timeit
?time
模块可能不工作吗?是的,我们也可以在上述情况下使用time.time()
。要进行检查,请将timer()
替换为time.time()
,但结果会略有不同。请参阅:stackoverflow.com/questions/7370801/…。阅读第二个答案。这就是我决定在上述情况下使用timer()
。有人知道为什么在应用上述步骤时,会出现此错误吗?AttributeError:“内置函数”或“方法”对象没有属性“日志”。我已经应用了自定义函数,但不确定为什么会一直显示此错误?