我正在使用keras训练RNN,并希望了解验证准确性如何随数据集大小而变化。 Keras在其历史记录对象中有一个名为val_acc的列表,该列表将在每个时期之后以各自的验证集精度(link to the post in google group)追加。我想获取运行的时期数的平均值val_acc并将其相对于各自的数据集大小进行绘制。

问题:如何检索val_acc列表中的元素并执行类似numpy.mean(val_acc)的操作?



编辑:正如@runDOSrun所说,获取val_acc的平均值没有任何意义。让我集中精力获取最终的val_acc

我尝试了@nemo的建议,但是没有运气。这是我打印时得到的

model.fit(X_train, y_train, batch_size = 512, nb_epoch = 5, validation_split = 0.05).__dict__

输出:

{'model': <keras.models.Sequential object at 0x000000001F752A90>, 'params': {'verbose': 1, 'nb_epoch': 5, 'batch_size': 512, 'metrics': ['loss', 'val_loss'], 'nb_sample': 1710, 'do_validation': True}, 'epoch': [0, 1, 2, 3, 4], 'history': {'loss': [0.96936064512408959, 0.66933631673890948, 0.63404161288724303, 0.62268789783555867, 0.60833334699708819], 'val_loss': [0.84040999412536621, 0.75676006078720093, 0.73714292049407959, 0.71032363176345825, 0.71341043710708618]}}


事实证明,我的历史词典中没有val_acc列表。

问题:如何在val_acc词典中包含history

最佳答案

要获得精度值,您需要请求在fit期间计算它们,因为精度不是目标函数,而是(通用)度量。有时计算准确性没有意义,因此在Keras中默认情况下未启用它。但是,它是一个内置指标,很容易添加。

要添加指标,use metrics=['accuracy'] parameter to model.compile

在您的示例中:

history = model.fit(X_train, y_train, batch_size = 512,
          nb_epoch = 5, validation_split = 0.05)


然后,您可以按history.history['val_acc']访问验证准确性

07-24 09:52
查看更多