如何绘制keras实验的学习曲线?

aki*_*t90 10 machine-learning neural-network cross-validation keras recurrent-neural-network

我正在使用keras训练RNN,并希望了解验证准确度如何随数据集大小而变化.Keras val_acc在其历史对象中有一个名单,该列表在每个时期之后附加,具有相应的验证集准确性(链接到google组中的帖子).我想获得val_acc运行时期数的平均值,并根据相应的数据集大小进行绘制.

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


编辑:正如@runDOSrun所说,得到val_accs 的意思是没有意义的.让我专注于进入决赛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]}}
Run Code Online (Sandbox Code Playgroud)

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

问题:如何val_acchistory字典中加入?

Nei*_*ter 7

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

要添加度量标准,请使用metrics=['accuracy']参数tomodel.compile.

在你的例子中:

history = model.fit(X_train, y_train, batch_size = 512, 
          nb_epoch = 5, validation_split = 0.05)
Run Code Online (Sandbox Code Playgroud)

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

  • 这不应该抛出错误吗?根据[docs](https://keras.io/models/sequential),需要在`model.compile()`而不是`model.fit()`中指定指标. (2认同)

nem*_*emo 3

历史对象是在fit()模型建立期间创建的。keras/engine/training.py详情请参阅。

history您可以使用模型上的属性访问历史记录: model.history

拟合模型后,您只需对属性进行平均即可。

np.mean([v['val_acc'] for v in model.history])
Run Code Online (Sandbox Code Playgroud)

请注意,该模式适用val_<your output name here>于您指定的每个输出。