数据分析师养成之路之keras篇,添加auc,costtime

每个epoch显示结果中添加auc,costtime
以下代码,显示结果中添加了auc,acc,costtime,当然这几个参数也可以写在callbacks中

for epoch in range(10):
    starttime=time.time()
    #注意,这里也可以是fit_generate,不过要保证epochs=1
    model.fit(train_data,train_label,epochs=1, batch_size=32)
    #注意这里,若是生成器,建议单独写一个方法,对于test_generate里的全部数据取出,
    #放入列表中,转变格式,np.array(..).squeeze()等操作之后继续执行如下操作即可
    y_pre=model.predict(test_data)
    auc=metrics.roc_auc_score(test_label.flatten(),y_pre.flatten())
    predict=np.argmax(y_pre,axis=1)
    test_pre=np.argmax(test_label,axis=1)
    acc=metrics.accuracy_score(test_pre,predict)
    costtime=time.time()-starttime
    print('auc:{auc},acc:{acc},costtime:{costtime}'.format(auc=auc,acc=acc,costtime=costtime))

写在callbacks中

#这里若是生成器,on_x_begin用next(generate)值,之后操作类似
class RocAucMetricCallback(keras.callbacks.Callback):
    def __init__(self,validation_data):
        self.x_val,self.y_val=validation_data
    def on_epoch_begin(self,epoch,logs={}):
        #添加roc_auc_val属性
        starttime=time.time()
        if not ('roc_auc_val' in self.params['metrics']):
            self.params['metrics'].append('roc_auc_val')
        if not ('costtime' in self.params['metrics']):
            self.params['metrics'].append('costtime')
        return starttime
    def on_epoch_end(self,epoch,logs={}):
        starttime=self.on_epoch_begin(epoch)
        nowtime=time.time()

        costtime=nowtime-starttime
        #costtime=time.time()
        #print(costtime)
        y_pre=model.predict(self.x_val)
        logs['roc_auc_val']=float('-inf')
        if(self.validation_data):
            logs['roc_auc_val']=roc_auc_score(self.y_val.flatten(),y_pre.flatten())
            logs['costtime']=costtime
        print('auc:{auc},costtime:{costtime}'.format(auc=logs.get('roc_auc_val'),costtime=logs.get('costtime')))

my=RocAucMetricCallback(validation_data=(test_data,test_label)) 


model.fit(train_data,train_label,epochs=20, batch_size=32,validation_data=(test_data,test_label),callbacks=[my])

猜你喜欢

转载自blog.csdn.net/lulujiang1996/article/details/81165098