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

如何在Keras中绘制Epoch与训练准确率关系图及迭代对应疑问

Hey there! Let's tackle your two questions step by step.

关于“10次迭代对应1个epoch”的推测验证

你的推测完全站得住脚!先明确几个核心概念帮你确认:

  • Epoch:指模型完整遍历一遍整个训练数据集的过程。
  • 迭代(Step/Iteration):指模型处理一个批量(batch)的训练数据并完成一次参数更新的过程。

假设训练数据集总共有 N 个样本,训练时设置的批量大小(batch size)为 B,那么一个epoch包含的迭代次数就是 ceil(N / B)(向上取整,确保所有样本都被遍历)。如果论文里标注10次迭代对应1个epoch,那说明训练集总样本数刚好是批量大小的10倍(比如batch size=128,训练集就有1280个样本,1280/128=10)。

要验证这个推测的话,你可以:

  • 查找论文的实验设置部分,看是否明确标注了训练集规模和batch size的数值,直接计算两者的商是否等于10;
  • 如果论文没直接写训练集大小,也可以结合实验用到的数据集名称(公开数据集的规模通常是已知的)反推batch size是否符合这个比例。
在Keras中绘制epoch与训练准确率的关系图

Keras的训练过程会自动记录每个epoch的指标数据,你可以借助matplotlib轻松画出这个关系图,具体步骤如下:

  1. 训练模型并保存历史记录
    调用model.fit()时,将返回的History对象保存下来,它包含了训练过程中所有指标的变化数据:

    # 假设你已经定义好模型model和训练数据train_x、train_y
    history = model.fit(
        train_x, train_y,
        epochs=50,  # 你设置的训练轮数
        batch_size=32,
        # 如果有验证集可以加上validation_data=(val_x, val_y)
    )
    
  2. 提取训练准确率数据
    History对象的history属性是一个字典,键为指标名称,值为对应每个epoch的指标数值。注意Keras版本的差异:

    • 较新的TensorFlow Keras版本中,训练准确率的键是'accuracy';
    • 旧版本Keras可能使用'acc'作为键。
      提取代码如下:
    train_acc = history.history['accuracy']  # 或 history.history['acc']
    
  3. 绘制准确率曲线
    导入matplotlib并画图:

    import matplotlib.pyplot as plt
    
    # 生成epoch的序号(从1开始)
    epochs = range(1, len(train_acc) + 1)
    
    # 绘制训练准确率曲线
    plt.plot(epochs, train_acc, 'bo-', label='Training Accuracy')
    plt.title('Training Accuracy vs. Epochs')
    plt.xlabel('Epochs')
    plt.ylabel('Accuracy')
    plt.legend()
    
    # 显示图形
    plt.show()
    

如果需要同时对比验证准确率,只需要额外提取history.history['val_accuracy'](或'val_acc'),再添加一条曲线即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:16:03