我一直在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()
提前致谢
答案 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
时间段。