首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras,只打印验证数据的指标。

Keras,只打印验证数据的指标。
EN

Stack Overflow用户
提问于 2017-12-12 14:24:29
回答 1查看 3.8K关注 0票数 4

对不起,这个小问题,如果这不是合适的地方,请给我一个更好的来源。

是否有一种只为validation_data打印keras指标的方法?

我想跟踪几个划时代的指标(例如精确性、召回率和f1评分)。在keras git历史记录中有几种方便的方法可供使用,但它们在训练时按批处理计算时没有意义,而在测试/验证时则这样做。

所以训练指标只是把我的日志弄得乱七八糟。有办法让他们安静下来吗?

编辑:我知道我可以子类Callback,并且只在划时代结束时做这些,但是那样的话,我将对每个时代的验证数据做两个预测,一个在回调中,另一个由幕后的keras来计算验证损失。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 03:57:11

只有当ProgbarLogger回调( verbose > 0 )时,才会将该回调添加到模型中。在源代码training.py

代码语言:javascript
复制
if verbose:
    if steps_per_epoch is not None:
        count_mode = 'steps'
    else:
        count_mode = 'samples'
    callbacks += [cbks.ProgbarLogger(count_mode)]

因此,一个可能的解决办法是:

  • verbose=0中指定fit()以抑制内置ProgbarLogger
  • 子类ProgbarLogger,并更改代码以忽略培训指标。
  • 调用fit()时添加此回调

例如,

代码语言:javascript
复制
from keras.callbacks import ProgbarLogger

class ValOnlyProgbarLogger(ProgbarLogger):
    def __init__(self, verbose, count_mode='samples'):
        # Ignore the `verbose` argument specified in `fit()` and pass `count_mode` upstream
        self.verbose = verbose
        super(ValOnlyProgbarLogger, self).__init__(count_mode)

    def on_train_begin(self, logs=None):
        # filter out the training metrics
        self.params['metrics'] = [m for m in self.params['metrics'] if m.startswith('val_')]
        self.epochs = self.params['epochs']

input_tensor = Input(shape=(256,))
out = Dense(10)(input_tensor)
model = Model(input_tensor, out)
model.compile(loss='mse', optimizer='adam', metrics=['mae', 'cosine'])
model.fit(X, Y, validation_data=(XX, YY), verbose=0,
          callbacks=[ValOnlyProgbarLogger(verbose=1)])

培训指标现在将被取消:

代码语言:javascript
复制
Epoch 1/1
1000/1000 [==============================] - 0s 392us/step - val_loss: 0.2479 - val_mean_absolute_error: 0.3988 - val_cosine_proximity: -0.7022

注意,如果您使用的是fit_generator而不是fit,则在初始化ValOnlyProgbarLogger时需要指定count_mode='steps'

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47774931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档