美文网首页
按照每次batch级别的训练结果来画loss与acc曲线

按照每次batch级别的训练结果来画loss与acc曲线

作者: 小菜鸡 | 来源:发表于2021-05-15 14:52 被阅读0次

因为有的模型是epoch敏感的,只需要很少的epoch就能够达到比较好的训练结果,因此采用常规的记录方式没办法比较好的画lossacc的图(横轴epoch数据太少),需要在每个batch之后就能够画出当前batch级别的训练信息。
可以用过自定义的类来继承Callback,然后把这个类传给fitcallbacks参数,这样训练的时候回调该类里面的函数达到信息记录的目的:

from keras import callbacks
class LossAndAccHistory(callbacks.Callback):
    '''
    继承自Callback,实现特定的方法
    '''
    def on_train_begin(self, logs={}):
        self.loss = []
        self.acc = []

    def on_batch_end(self, batch, logs={}):
        self.loss.append(logs.get('loss'))
        self.acc.append(logs.get('acc'))


history = LossAndAccHistory()
epochs = 2
model.fit(x_train, y_train, batch_size=64, epochs=epochs, validation_data=(x_val, y_val),
                    callbacks=[history]) #自定义的函数给到callback回调,每次在固定的时间点记录训练信息
plt.figure()
plt.plot(range(0, len(history.loss)), history.loss, label='train_loss')
plt.plot(range(0, len(history.acc)), history.acc, label='train_acc')
plt.xlabel('Batch')
plt.title('Training Loss and Accuracy')
plt.ylabel('Loss / Accuracy')
plt.legend()
plt.savefig('./train-results.png')
plt.show()

相关文章

网友评论

      本文标题:按照每次batch级别的训练结果来画loss与acc曲线

      本文链接:https://www.haomeiwen.com/subject/gyohjltx.html