news 2026/8/26 19:40:01

如何写一个可以识别图像数字的基于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/8/26 17:48:00

OpenTelemetry Collector全链路测试环境:Docker Compose一键部署实战

OpenTelemetry Collector全链路测试环境:Docker Compose一键部署实战 【免费下载链接】opentelemetry-collector OpenTelemetry Collector 项目地址: https://gitcode.com/GitHub_Trending/op/opentelemetry-collector 还在为微服务追踪系统的本地验证而烦恼…

作者头像 李华
网站建设 2026/8/27 12:27:23

从臃肿到轻量:Gridea助你打造极速静态博客新体验

从臃肿到轻量:Gridea助你打造极速静态博客新体验 【免费下载链接】gridea ✍️ A static blog writing client (一个静态博客写作客户端) 项目地址: https://gitcode.com/gh_mirrors/gr/gridea 你是否曾因博客加载缓慢而流失读者?是否厌倦了频繁的…

作者头像 李华
网站建设 2026/8/26 16:13:53

12、解锁Ubuntu高级使用技巧:多方面提升系统操作能力

解锁Ubuntu高级使用技巧:多方面提升系统操作能力 访问其他分区的Windows文件 如果你经常使用Windows分区,可能希望能在Ubuntu系统中访问这些分区。虽然需要编辑一个特殊的配置文件,但这并不困难,而且只需编辑一次,之后就能轻松访问。 Ubuntu通常能自动识别电脑上的Wind…

作者头像 李华
网站建设 2026/8/27 3:59:03

Mistral-Small-3.2-24B:多模态AI效率革命,企业级应用落地新引擎

导语 【免费下载链接】Mistral-Small-3.2-24B-Instruct-2506 项目地址: https://ai.gitcode.com/hf_mirrors/mistralai/Mistral-Small-3.2-24B-Instruct-2506 Mistral AI最新发布的Mistral-Small-3.2-24B-Instruct-2506多模态大模型,通过显著提升指令遵循能…

作者头像 李华
网站建设 2026/8/26 19:09:03

12、Python在专业领域的应用与实践

Python在专业领域的应用与实践 Python作为一种功能强大且广泛应用的编程语言,在全球范围内得到了众多开发者、工程师和科研人员的青睐。本文将详细介绍Python在系统管理、Web开发和科学计算等领域的应用,以及相关的操作步骤和工具。 1. 系统管理中的Python应用 系统管理任…

作者头像 李华
网站建设 2026/8/25 9:31:33

15、Unity 2D 游戏开发:从记忆游戏到 2D 平台游戏

Unity 2D 游戏开发:从记忆游戏到 2D 平台游戏 记忆游戏开发 在开发记忆游戏时,我们首先关注了分数显示的问题。通过以下代码,我们可以将分数显示在文本对象上: [SerializeField] private TextMesh scoreLabel; ... private IEnumerator CheckMatch() {if (_firstReveal…

作者头像 李华