如何在Keras中确定每个epoch的训练准确率?

我在Keras中训练模型如下:

model.fit(Xtrn, ytrn batch_size=16, epochs=50, verbose=1, shuffle=True,          callbacks=[model_checkpoint], validation_data=(Xval, yval))

拟合输出如下所示:

enter image description here

model.fit所示,我的批量大小为16,总共有8000个训练样本,如输出所示。因此,根据我的理解,训练每16个批次进行一次。这也意味着在一个epoch中,训练会运行500次(即,8000/16 = 500)。

那么,让我们来看一下输出中Epoch 1/50的训练准确率,在这种情况下是0.9381。我想知道这个0.9381的训练准确率是如何得出的。

它是:

  1. 是每次批次训练500次的平均训练准确率吗?

还是,

  1. 是从500次训练过程中得出的最佳(或最大)训练准确率吗?

回答:

查看Keras中的BaseLogger,他们在计算一个正在运行的平均值。对于每个epoch,准确率是该epoch中之前看到的所有批次的平均值。

class BaseLogger(Callback):    """Callback that accumulates epoch averages of metrics.    This callback is automatically applied to every Keras model.    """    def on_epoch_begin(self, epoch, logs=None):        self.seen = 0        self.totals = {}    def on_batch_end(self, batch, logs=None):        logs = logs or {}        batch_size = logs.get('size', 0)        self.seen += batch_size        for k, v in logs.items():            if k in self.totals:                self.totals[k] += v * batch_size            else:                self.totals[k] = v * batch_size    def on_epoch_end(self, epoch, logs=None):        if logs is not None:            for k in self.params['metrics']:                if k in self.totals:                    # Make value available to next callbacks.                    logs[k] = self.totals[k] / self.seen

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注