获得各模型预测字的机率表
资料总笔数
程序码
import torch
import torch.nn as nn
import os
from dataset import CaptchaData
from torchvision.transforms import Compose, ToTensor
import csv
import copy
data_path = r"C:\Users\Frank\PycharmProjects\practice\mountain\清洗标签final\train_all"
img_names = os.listdir(data_path)
source = img_names
title = copy.deepcopy(source)
title.append('predict')
title.append('true')
f = open('./densenet201_in800_official_nomask.csv', 'a',newline='')
w = csv.writer(f)
w.writerow(title)
f.close()
alphabet = ''.join(source)
def predict(img_dir):
n = 0
m = 0
transforms = Compose([
ToTensor()
])
dataset = CaptchaData(img_dir, transform=transforms)
model = torch.load('./best_densenet201_8.pth')
if torch.cuda.is_available():
model = model.cuda()
model.eval()
for k, (img, target) in enumerate(dataset):
img = img.view(1, 3 , 80 ,80 ).cuda()
target = target.view(1, 1 * 800).cuda()
output = model(img)
output = output.view(-1, 800)
target = target.view(-1, 800)
output_prob = nn.functional.softmax(output, dim=1)
output_prob_list = output_prob.cpu().detach().numpy().tolist()
output = torch.argmax(output_prob, dim=1)
target = torch.argmax(target, dim=1)
output = output.view(-1, 1)[0]
target = target.view(-1, 1)[0]
print('pred: ' + ''.join([alphabet[i] for i in output.cpu().numpy()]))
print('true: ' + ''.join([alphabet[i] for i in target.cpu().numpy()]))
pred = ''.join([alphabet[i] for i in output.cpu().numpy()])
true = ''.join([alphabet[i] for i in target.cpu().numpy()])
if pred == true:
n += 1
output_prob_list[0].append(pred)
output_prob_list[0].append(true)
# output_prob_list[0].append(1)
f = open('./densenet201_in800_official_nomask.csv', 'a',newline='')
w = csv.writer(f)
w.writerow(output_prob_list[0])
f.close()
else:
m += 1
output_prob_list[0].append(pred)
output_prob_list[0].append(true)
# output_prob_list[0].append(0)
f = open('./densenet201_in800_official_nomask.csv', 'a',newline='')
w = csv.writer(f)
w.writerow(output_prob_list[0])
f.close()
print("pred_acc:", n / (n + m))
print(m)
输出的800字机率表
判断方法
选择每个字的阈值
任意选择奇数个模型组合後,产生模型权重表与利用新模型权重得到的机率表。
如何判断isnull
之後的作法可参考训练模型-模型组合与辨识isnull(二)以及训练模型-模型组合与辨识isnull(三)。
因为同组的关系,我的队友写得又比我快比我好,我忍不住要来分享一下他的文,我们做法是这麽做的,在最後会来探讨其他组别的作法。
後面判断完isnull就剩下上GCP架设API,供比赛的时候使用。
前情提要 Firebase 是 Google 推出的云端後端服务平台,提供了行动端 (Android...
前言 昨天我们稍微介绍了头脑风暴的作用与做法,今天我们稍微来介绍敏捷看板的用法! 敏捷看板是一款基础...
前言 Python虽然可以直接使用Windows的Console直接执行程序,但是不只对於笔者,对於...
【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...
今天继续说滚动视差 球球的部分先在scroll_thing的下方加上球球的div <div c...