Keras绘图精度与时间的关系

时间:2017-01-24 00:24:38

标签: performance plot time keras conv-neural-network

我一直在Keras培训CNN,并将培训和验证准确性作为时代的函数进行绘制。我想知道是否有一种方法可以将精确度绘制为处理时间的函数。

原因是我希望展示转学习的速度,而不是重新培训整个网络。当使用转移学习时,网络需要相似数量的时期来训练,给予或接受,但每个时期花费的时间要少得多(快一个数量级),我想以图形方式捕获它。

以下是我目前使用的代码:

history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_data=(X_test, Y_test))

print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='lower right')
plt.show()

提前致谢

1 个答案:

答案 0 :(得分:2)

因此,在Keras中执行一段代码来执行任务实际上非常简单。为了做到这一点 - 熟悉keras.callback是很好的。它可以调用自定义函数:

on_epoch_begin:在每个时代的开始都被召唤。

on_epoch_end:在每个时代结束时召集,

on_batch_begin:在每批次的开头调用,

on_batch_end:在每批结束时调用,

on_train_begin:在模型训练开始时调用,

on_train_end:在模特训练结束时调用。

所以你现在可以实施,例如一个新的回调将:

  • 注册培训时间的开始on_train_begin
  • 在每个纪元的末尾,它将使用on_epoch_end提供的dict注册计算结束的实际时间,
  • 注册培训结束on_train_end

通过使用此回调收集的数据,您可以通过各种方式轻松呈现时间和准确性之间的依赖关系。当然 - 它可以很容易地延长到batch/iterations时间段。