栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Keras中分批训练期间显示每个时期的进度条

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Keras中分批训练期间显示每个时期的进度条

1。

model.fit(X, y, nb_epoch=40, batch_size=32, validation_split=0.2, verbose=1)

在上述对的更改中

verbose=2
,如文档中所述:“详细:0表示不记录到stdout,1表示进度条记录,”
2 for one log lineper epoch

它将输出显示为:

Epoch 1/1000s - loss: 0.2506 - acc: 0.5750 - val_loss: 0.2501 - val_acc: 0.3750Epoch 2/1000s - loss: 0.2487 - acc: 0.6250 - val_loss: 0.2498 - val_acc: 0.6250Epoch 3/1000s - loss: 0.2495 - acc: 0.5750 - val_loss: 0.2496 - val_acc: 0.6250..........

2。

如果要显示进度条以完成纪元,请保留

verbose=0
(关闭记录到stdout的日志)并以以下方式实现:

from time import sleepimport sysepochs = 10for e in range(epochs):    sys.stdout.write('r')    for X, y in data.next_batch():        model.fit(X, y, nb_epoch=1, batch_size=data.batch_size, verbose=0)    # print loss and accuracy    # the exact output you're looking for:    sys.stdout.write("[%-60s] %d%%" % ('='*(60*(e+1)/10), (100*(e+1)/10)))    sys.stdout.flush()    sys.stdout.write(", epoch %d"% (e+1))    sys.stdout.flush()

输出将如下所示:

[================================================= ===========] 100%,纪元10

3。

如果要每n个批次显示一次损失,可以使用:

out_batch = NBatchLogger(display=1000)model.fit([X_train_aux,X_train_main],Y_train,batch_size=128,callbacks=[out_batch])

不过,我以前从未尝试过。上面的示例来自于这个keras github问题:Show Loss N N
Batchs#2850

您还可以在

NBatchLogger
此处进行演示:

class NBatchLogger(Callback):    def __init__(self, display):        self.seen = 0        self.display = display    def on_batch_end(self, batch, logs={}):        self.seen += logs.get('size', 0)        if self.seen % self.display == 0: metrics_log = '' for k in self.params['metrics']:     if k in logs:         val = logs[k]         if abs(val) > 1e-3:  metrics_log += ' - %s: %.4f' % (k, val)         else:  metrics_log += ' - %s: %.4e' % (k, val) print('{}/{} ... {}'.format(self.seen,       self.params['samples'],       metrics_log))

4。

您也可以使用

progbar
进度,但它会分批打印进度

from keras.utils import generic_utilsprogbar = generic_utils.Progbar(X_train.shape[0])for X_batch, Y_batch in datagen.flow(X_train, Y_train):    loss, acc = model_test.train([X_batch]*2, Y_batch, accuracy=True)    progbar.add(X_batch.shape[0], values=[("train loss", loss), ("acc", acc)])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号