You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算TensorFlow中模型全训练周期(所有Epoch)的总耗时?

TensorFlow 分割模型训练总耗时计算实现

自定义回调记录每个Epoch耗时并累加

通过继承tf.keras.callbacks.Callback实现自定义回调,在每个Epoch的开始和结束节点记录时间,自动累加总耗时:

import tensorflow as tf
import time

class TimeHistory(tf.keras.callbacks.Callback):
    def on_train_begin(self, logs=None):
        self.total_training_time = 0.0

    def on_epoch_begin(self, epoch, logs=None):
        self._epoch_start = time.time()

    def on_epoch_end(self, epoch, logs=None):
        epoch_duration = time.time() - self._epoch_start
        self.total_training_time += epoch_duration
        print(f"Epoch {epoch+1} 耗时: {epoch_duration:.2f}s")

# 初始化回调实例
time_cb = TimeHistory()

# 训练时传入回调
model.fit(
    train_dataset,
    epochs=YOUR_EPOCH_NUM,
    callbacks=[time_cb]
)

# 训练结束后输出总耗时
print(f"全量数据集训练总耗时: {time_cb.total_training_time:.2f}s")

简化方案:直接记录训练全程时间

如果不需要单独统计每个Epoch的耗时,直接在训练前后记录时间差即可:

import time

# 训练前记录起始时间
start_total = time.time()

model.fit(
    train_dataset,
    epochs=YOUR_EPOCH_NUM
)

# 计算并输出总耗时
total_duration = time.time() - start_total
print(f"全量数据集训练总耗时: {total_duration:.2f}s")

注意点

  • 以上方法包含数据加载、预处理和模型训练的全部时间;若需仅统计模型正向/反向传播时间,需在数据 pipeline 和训练环节拆分计时
  • 分布式训练场景下,time.time()仅记录单进程时间,建议改用tf.timestamp()来适配分布式环境的时间统计

内容的提问来源于stack exchange,提问作者Emy Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:40:27