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

如何在Keras中计算200轮训练的训练准确率平均值?

修正Keras训练准确率平均值计算的问题

你的代码目前存在几个关键问题,导致无法正确计算200个epoch的训练准确率平均值:

  • 循环内每次调用model.fit(epochs=200),会让模型在每轮循环里都训练200个epoch,最终总共训练了40000个epoch,完全偏离了你的需求;
  • model.fit()返回的是History对象,不是直接的准确率数值,你需要从这个对象的history属性里提取对应的数据。

下面是两种可行的修正方案,帮你准确计算目标平均值:

方案一:逐epoch循环训练(适合需要逐轮监控的场景)

num_epochs = 200
total_sum = 0.0

for n in range(num_epochs):
    # 每次只训练1个epoch,减少冗余输出
    history = model.fit(x_train, y_train, epochs=1, batch_size=64, verbose=2)
    # 提取当前epoch的训练准确率(旧版Keras可能用'acc'替代'accuracy')
    current_acc = history.history['accuracy'][0]
    total_sum += current_acc

# 计算并打印平均值
avg_train_acc = total_sum / num_epochs
print(f"200个epoch的训练准确率平均值: {avg_train_acc:.4f}")

# 测试集评估
score = model.evaluate(x_test, y_test, verbose=2)
print(f"测试集损失: {score[0]:.4f}, 测试集准确率: {score[1]:.4f}")

方案二:一次性训练后计算(更高效简洁)

如果你不需要逐epoch的中间操作,直接一次性训练200个epoch,再从历史记录里提取所有准确率数据计算平均值,效率会更高:

# 一次性完成200个epoch的训练
history = model.fit(x_train, y_train, epochs=200, batch_size=64, verbose=2)
# 提取所有epoch的训练准确率列表
all_train_acc = history.history['accuracy']
# 计算平均值
avg_train_acc = sum(all_train_acc) / len(all_train_acc)

print(f"200个epoch的训练准确率平均值: {avg_train_acc:.4f}")

# 测试集评估
score = model.evaluate(x_test, y_test, verbose=2)
print(f"测试集损失: {score[0]:.4f}, 测试集准确率: {score[1]:.4f}")

小提示:

如果运行时出现键错误,检查你的Keras版本——旧版本中准确率的键是'acc',新版本是'accuracy',替换对应字符串即可。

内容的提问来源于stack exchange,提问作者Hadeer El-Zayat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:13:48