我正在Keras训练模型如下:
model.fit(Xtrn, ytrn batch_size=16, epochs=50, verbose=1, shuffle=True,
callbacks=[model_checkpoint], validation_data=(Xval, yval))
拟合输出如下:
如model.fit
所示,我的批量大小为16,总共8000
个训练样本如输出中所示。因此,根据我的理解,每16
批次都会进行培训。这也意味着对于单个时期(即500
8000/16 =500)
次
因此,让我们考虑Epoch 1/50输出中打印的训练精度,在这种情况下为0.9381
。我想知道0.9381
的训练准确度是如何得出的。
是:
i) 平均值 培训准确度是否为每批次500
次培训的平均值?
或,
ii)从培训程序运行的500
个实例中获得最佳(或 max )训练准确度是什么?
答案 0 :(得分:2)
查看BaseLogger
中的Keras
,他们正在计算一个正在运行的平均值。
对于每个时期,准确度是该时期之前所见的所有批次的平均值。
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