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

如何测量并记录Keras/TensorFlow下人工神经网络算法的总训练时长?

ANN训练总时长统计方案

可修改训练代码时的最优方案

直接在训练逻辑外层添加计时逻辑即可,不同框架的实现参考如下:

  • TensorFlow/Keras 框架
    可自定义回调实现,不需要改动原有训练逻辑:
import time
from tensorflow.keras.callbacks import Callback

class TotalTimeLogger(Callback):
    def on_train_begin(self, logs=None):
        self.train_start = time.time()
    def on_train_end(self, logs=None):
        total_cost = time.time() - self.train_start
        print(f"总训练耗时:{total_cost:.2f} 秒")

# 训练时传入回调即可
model.fit(x_train, y_train, epochs=10, callbacks=[TotalTimeLogger()])

也可以直接在model.fit前后加时间戳打印,实现逻辑更简单。

  • PyTorch 框架
    直接在外层训练循环加时间统计:
import time

start_time = time.time()
# 原有训练循环
for epoch in range(epochs_num):
    for batch_data in train_loader:
        # 单步训练逻辑
        pass

total_cost = time.time() - start_time
print(f"总训练耗时:{total_cost:.2f} 秒")

以上方案统计的时长最准确,包含了模型保存、校验、epoch间隙等所有额外开销。

仅能基于已有日志统计的方案

你给出的单步日志 7/7 [==============================] - 0s 2ms/step - loss: 0.2611 - accuracy: 0.9816已经包含了计算所需的核心字段:

  • 单步平均耗时:日志中2ms/step即为单步训练的耗时
  • 单epoch总步数:日志开头7/7的第二个数字即为单轮训练的总步数
    统计逻辑如下:
  1. 统计所有训练轮次的总步数 = 训练epoch数 × 单epoch总步数
  2. 若有验证环节,同步提取验证日志中的验证总步数、单步验证耗时
  3. 总训练时长 = (训练总步数 × 单步训练耗时) + (验证总步数 × 单步验证耗时)
    如果日志量较大,可以写简单脚本批量提取,用正则匹配r'- (\d+)s (\d+)ms/step'格式的字段,自动累加即可。该方法统计结果会有5%以内的误差,误差来自日志IO开销、训练间隙的闲置耗时,仅适合无法重跑训练的场景使用。

内容的提问来源于stack exchange,提问作者Steven Schmidt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:48:04