use*_*121 6 machine-learning deep-learning keras
我在 Keras 中训练模型如下:
model.fit(Xtrn, ytrn batch_size=16, epochs=50, verbose=1, shuffle=True,
callbacks=[model_checkpoint], validation_data=(Xval, yval))
Run Code Online (Sandbox Code Playgroud)
拟合输出如下所示:
如图所示,model.fit我的批量大小为 16,8000训练样本总数如输出所示。因此,根据我的理解,每16批次都会进行培训。这也意味着训练是500单个时期的运行时间(即,8000/16 =500)
因此,让我们采用 Epoch 1/50 输出中打印的训练准确度,在本例中为0.9381。我想知道这个训练精度是如何0.9381导出的。
是不是:
500次培训,每批执行?或者,
500吗?看看他们计算运行平均值的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |