news 2026/4/3 3:15:35

如何写一个可以识别图像数字的基于VIT大模型的简单代码?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何写一个可以识别图像数字的基于VIT大模型的简单代码?

直接上代码,源代码来自于kaggle上的大神,经过简单修改得到

# 模型# 数据# 训练fromtorch.utils.dataimportDataset,DataLoaderimportnumpyfromPILimportImageclassconvertDataset(Dataset):def__init__(self,data,transform)->None:super().__init__()self.data=data self.transform=transform self.labels=self.data.iloc[:,0].values self.images=self.data.iloc[:,1:].values.astype(numpy.uint8)def__len__(self):returnlen(self.data)def__getitem__(self,index):label=self.labels[index]image=self.images[index].reshape(28,28)image=Image.fromarray(image,"L")image=self.transform(image)returnimage,labeldefmain():# 模型importtorch.nnasnnimporttimm dict_path="D:\\kaggle\\digit-recognizer\\dict.pth"importosclassVIT(nn.Module):def__init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)self.model=timm.create_model("vit_base_patch16_224",pretrained=True)self.model.head=nn.Linear(self.model.head.in_features,10)# type:ignoreifos.path.exists(dict_path):print("load dict")self.model.load_state_dict(torch.load(dict_path))defforward(self,x):returnself.model(x)importtorch device=torch.device("cuda"iftorch.cuda.is_availableelse"cpu")model=VIT().to(device)# 数据importpandas train_data=pandas.read_csv("input/train.csv")fromtorchvisionimporttransforms transform=transforms.Compose([transforms.Resize((224,224)),transforms.Grayscale(num_output_channels=3),transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,))])train_dataset=convertDataset(train_data,transform)train_dataloader=DataLoader(train_dataset,batch_size=20,shuffle=True,num_workers=1,pin_memory=True)# 训练epoches=5optimizer=torch.optim.Adam(model.parameters(),lr=1e-4)criterion=nn.CrossEntropyLoss()importtimeimporttorch.autograd.profilerasprofilerforepochinrange(epoches):model.train()batch=0forimages,labelsintrain_dataloader:start_time=time.time()images,labels=images.to(device),labels.to(device)optimizer.zero_grad()output=model(images)loss=criterion(output,labels)loss.backward()optimizer.step()batch+=1total=len(labels)start_time1=time.time()_,predicted=output.max(1)correct=(predicted==labels).sum().item()print(f"batch:{batch}/{len(train_dataloader)}",f"epoch:{epoch}/{epoches}",f"loss:{loss.item():.4f}",f"accuracy:{correct/total:.4f}",f"spend:{time.time()-start_time:.2f}")ifbatch%1000==0:torch.save(model.model.state_dict(),dict_path)if__name__=="__main__":main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 12:08:14

30分钟掌握Ocelot网关:从零搭建微服务API网关的完整指南

30分钟掌握Ocelot网关:从零搭建微服务API网关的完整指南 【免费下载链接】Ocelot 项目地址: https://gitcode.com/gh_mirrors/oce/Ocelot 在微服务架构中,API网关作为系统的统一入口,承担着路由转发、安全认证、流量控制等关键职责。…

作者头像 李华
网站建设 2026/3/30 2:55:02

AI 医疗的精准革命:肺癌筛查准确率突破 80%,诊断效率提升 50%

一、肺癌筛查的临床痛点与 AI 介入契机肺癌连续多年占据全球癌症死亡率首位,国家癌症中心数据显示,我国肺癌患者 5 年生存率仅 19.7%,核心症结在于早期筛查覆盖率不足与诊断延迟。传统肺癌筛查依赖胸部 CT 影像解读,但一张 CT 图像…

作者头像 李华
网站建设 2026/3/24 13:51:06

Dexed合成器终极指南:从零开始掌握经典DX7模拟

Dexed合成器终极指南:从零开始掌握经典DX7模拟 【免费下载链接】dexed DX7 FM multi plaform/multi format plugin 项目地址: https://gitcode.com/gh_mirrors/de/dexed Dexed是一款功能强大的开源合成器工具,完美模拟了经典的Yamaha DX7数字合成…

作者头像 李华
网站建设 2026/3/28 23:30:35

防腐涂料哪家生产厂家

海洋涂料:防腐涂料生产厂家综合指南引言在工业防护领域,防腐涂料的选择直接关系到设备使用寿命和运营安全。随着海洋工程、船舶制造和沿海设施建设的快速发展,海洋涂料作为防腐涂料的重要分支,其技术要求和性能标准日益提高。本文…

作者头像 李华
网站建设 2026/3/31 5:22:44

坐标系:导航系统的 “翻译官”

无人机控制、组合导航、机器人定位等场景中,坐标系是连接传感器数据、运动建模与实际应用的核心桥梁。不同坐标系就像不同的 “语言”,对应着不同的参考基准:有的适配局部导航,有的适配全球定位,有的直接对接传感器数据…

作者头像 李华
网站建设 2026/4/1 22:36:48

38、游戏开发全解析:Unity平台的全方位指南

游戏开发全解析:Unity平台的全方位指南 在游戏开发领域,Unity平台凭借其强大的功能和广泛的适用性,成为了众多开发者的首选。本文将深入探讨使用Unity进行游戏开发的各个方面,涵盖图形、音频、控制、网络等关键领域,为你提供全面而深入的开发指南。 1. 图形处理 图形是…

作者头像 李华