2023年12月8日发(作者:五菱宏光s七座新车图片)

用python计算准确率_Python中计算模型精度的几种方

法,Pytorch,中求,准确率

方法一:直接在epoch过程中求取准确率

简介:此段代码是LeNet5中截取的。

def train_model(model,train_loader):

optimizer = (ters())

loss_func = ntropyLoss()

EPOCHS = 5

for epoch in range(EPOCHS):

correct = 0

for batch_idx,(X_batch,y_batch) in enumerate(train_loader):

_grad()

#这里是只取训练数据的意思吗,X_batch和y_batch是怎么分开的?

#答:X_batch和y_batch是一一对应的,只不过顺序打乱了,参考

output = model(X_()) #X_()是什么意思

loss = loss_func(output,y_batch)

rd()

()

# Total correct predictions

#第一个1代表取每行的最大值,第二个1代表只取最大值的索引

#这两行代码是求准确率的地方

predicted = (,1)[1]

correct += (predicted == y_batch).sum()

#print(correct)

if batch_idx % 100 == 0:

print(\'Epoch :{}[{}/{}({:.0f}%)]t Loss:{:.6f}t Accuracy:{:.3f}\'.format(epoch,batch_idx *

len(X_batch),len(train_t),100.*batch_idx /

len(train_loader),(),float(correct*100)/float(BATCH_SIZE)*(batch_idx+1)))

if __name__ == \'__main__\':

myModel = LeNet5()

print(myModel)

train_model(myModel,train_loader)

evaluate(myModel,test_loader,BATCH_SIZE)

方法二:构建函数,然后在epoch中调用该函数

简介:此段代码是对Titanic(泰坦尼克号)数据分析截取。

epochs = 10

log_step_freq = 30

dfhistory = ame(columns = [\'epoch\',\'loss\',metric_name,\'val_loss\',\'val_\'+metric_name])

print(\'\')

nowtime = ().strftime(\'%Y-%m-%d %H:%M:%S\')

print(\'=========\'*8 + \'%s\'%nowtime)

for epoch in range(1,epochs+1):

#1.训练循环

()

loss_sum = 0.0

metric_sum = 0.0

step = 1

for step,(features,labels) in enumerate(dl_train,1):

#梯度清零

_grad()

#正向传播求损失

predictions = net(features)

loss = loss_func(predictions,labels)

metric = metric_func(predictions,labels)

#反向传播求梯度

rd()

()

#打印batch级别日志

loss_sum += ()

metric_sum += ()

if step%log_step_freq == 0:

print((\'[Step = %d] loss: %.3f,\' + metric_name+\': %.3f %%\')%(step,loss_sum/step,100*metric_sum/step))

#2,验证循环

()

val_loss_sum = 0.0val_metric_sum = 0.0

val_step =1

for val_step,(features,labels) in enumerate(dl_valid,1):

#关闭梯度计算

with _grad():

pred = net(features)

val_loss = loss_func(pred,labels)

val_metric = metric_func(labels,pred)

val_loss_sum += val_()

val_metric_sum += val_()

#3,记录日志

info = (epoch,loss_sum/step,100*metric_sum/step,

val_loss_sum/val_step,100*val_metric_sum/val_step)

[epoch-1] = info

#打印epoch级别日志

print((\'nEPOCH = %d,loss = %.3f,\' + metric_name+

\'=%.3f %%,val_loss = %.3f\'+\' val_\'+metric_name+\'= %.3f %%\')%info)

nowtime = ().strftime(\'%Y-%m-%d %H:%M:%S\')

print(\'n\'+\'==========\'*8 + \'%s\'%nowtime)

print(\'\')

更多推荐

计算,准确率,方法