日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/13 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python计算准确率_Python中计算模型精度的几种方法,Pytorch,中求,准确率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法一:直接在epoch過程中求取準確率

簡介:此段代碼是LeNet5中截取的。

def train_model(model,train_loader):

optimizer = torch.optim.Adam(model.parameters())

loss_func = nn.CrossEntropyLoss()

EPOCHS = 5

for epoch in range(EPOCHS):

correct = 0

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

optimizer.zero_grad()

#這里是只取訓練數據的意思嗎,X_batch和y_batch是怎么分開的?

#答:X_batch和y_batch是一一對應的,只不過順序打亂了,參考torch.utils.data.ipynb

output = model(X_batch.float()) #X_batch.float()是什么意思

loss = loss_func(output,y_batch)

loss.backward()

optimizer.step()

# Total correct predictions

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

#這兩行代碼是求準確率的地方

predicted = torch.max(output.data,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_loader.dataset),100.*batch_idx / len(train_loader),loss.data.item(),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 = pd.DataFrame(columns = ['epoch','loss',metric_name,'val_loss','val_'+metric_name])

print('Start Training...')

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

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

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

#1.訓練循環

net.train()

loss_sum = 0.0

metric_sum = 0.0

step = 1

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

#梯度清零

optimizer.zero_grad()

#正向傳播求損失

predictions = net(features)

loss = loss_func(predictions,labels)

metric = metric_func(predictions,labels)

#反向傳播求梯度

loss.backward()

optimizer.step()

#打印batch級別日志

loss_sum += loss.item()

metric_sum += metric.item()

if step%log_step_freq == 0:

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

#2,驗證循環

net.eval()

val_loss_sum = 0.0

val_metric_sum = 0.0

val_step =1

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

#關閉梯度計算

with torch.no_grad():

pred = net(features)

val_loss = loss_func(pred,labels)

val_metric = metric_func(labels,pred)

val_loss_sum += val_loss.item()

val_metric_sum += val_metric.item()

#3,記錄日志

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

val_loss_sum/val_step,100*val_metric_sum/val_step)

dfhistory.loc[epoch-1] = info

#打印epoch級別日志

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

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

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

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

print('Finishing Training...')

總結

以上是生活随笔為你收集整理的用python计算准确率_Python中计算模型精度的几种方法,Pytorch,中求,准确率的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。