news 2026/6/10 14:51:21

如何写一个可以识别图像数字的基于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/6/10 17:09:57

GLM-4.6技术深度解析:200K上下文窗口与智能体工具调用的革命性突破

GLM-4.6技术深度解析:200K上下文窗口与智能体工具调用的革命性突破 【免费下载链接】GLM-4.6 GLM-4.6在GLM-4.5基础上全面升级:200K超长上下文窗口支持复杂任务,代码性能大幅提升,前端页面生成更优。推理能力增强且支持工具调用&a…

作者头像 李华
网站建设 2026/6/10 13:58:38

Devtron:Electron应用调试神器完全指南

Devtron:Electron应用调试神器完全指南 【免费下载链接】devtron [LOOKING FOR MAINTAINERS] An Electron DevTools Extension 项目地址: https://gitcode.com/gh_mirrors/de/devtron 还在为Electron应用的调试而烦恼吗?Devtron正是你需要的调试利…

作者头像 李华
网站建设 2026/6/10 7:45:00

3分钟快速上手OpenAI Translator:跨平台AI翻译工具完整指南

OpenAI Translator是一款革命性的跨平台工具,集成了先进的AI辅助翻译技术,为用户提供一键安装的便捷体验。这款强大的翻译软件支持Windows、macOS和Linux三大操作系统,让语言障碍不再是问题。无论你是技术新手还是普通用户,都能轻…

作者头像 李华
网站建设 2026/6/10 15:49:33

AI绘画版权检测:从问题诊断到合规实践的全流程指南

AI绘画版权检测:从问题诊断到合规实践的全流程指南 【免费下载链接】jukebox Code for the paper "Jukebox: A Generative Model for Music" 项目地址: https://gitcode.com/gh_mirrors/ju/jukebox 在Stable Diffusion、Midjourney等AI绘画工具快速…

作者头像 李华
网站建设 2026/6/10 4:52:12

8、Ubuntu Unity桌面使用指南

Ubuntu Unity桌面使用指南 1. 登录Ubuntu系统 启动Ubuntu系统后,会显示用户列表。从列表中选择用户名,按回车键,接着输入密码并再次按回车键登录。密码会显示为一连串的“*”,这是安全特性。登录后,稍等片刻Ubuntu桌面就会出现。 2. Unity桌面特点 与其他操作系统不同…

作者头像 李华
网站建设 2026/6/10 12:04:52

27、Ubuntu系统全方位指南:功能、配置与社区参与

Ubuntu系统全方位指南:功能、配置与社区参与 1. 特殊符号与命令行基础 在Ubuntu系统中,一些特殊符号有着重要的用途。例如,星号(*)和问号(?)是通配符,可用于文件搜索等操作,如在查找文件时,使用 ls *.txt 可以列出所有以 .txt 结尾的文件。连字符(-)用于命令…

作者头像 李华