当前位置: 首页 > news >正文

timm使用笔记

timm(Timm is a model repository for PyTorch)是一个 PyTorch 原生实现的计算机视觉模型库。它提供了预训练模型和各种网络组件,可以用于各种计算机视觉任务,例如图像分类、物体检测、语义分割等等。timm(库提供了预训练模型、模型构建块和模型训练的实用工具。timm库可以帮助开发者快速构建和训练深度学习模型,同时支持多种图像分类、分割和检测任务,特别是结合torch和torchvision的使用,对你训练模型,事半功倍。

timm 的特点如下:

  • PyTorch 原生实现:timm 的实现方式与 PyTorch 高度契合,开发者可以方便地使用 PyTorch 的 API 进行模型训练和部署。
  • 轻量级的设计:timm 的设计以轻量化为基础,根据不同的计算机视觉任务,提供了多种轻量级的网络结构。
  • 大量的预训练模型:timm 提供了大量的预训练模型,可以直接用于各种计算机视觉任务。
  • 多种模型组件:timm 提供了各种模型组件,如注意力模块、正则化模块、激活函数等等,这些模块都可以方便地插入到自己的模型中。
  • 高效的代码实现:timm 的代码实现高效并且易于使用。

需要注意的是,timm 是一个社区驱动的项目,它由计算机视觉领域的专家共同开发和维护。在使用时需要遵循相关的使用协议。

1. 安装

pip install timm

2. 准备数据集

首先,我们需要准备CIFAR-10数据集。我们可以使用torchvision库来下载和加载数据集:

import torch
import torchvision
import torchvision.transforms as transforms# 数据预处理transform = transforms.Compose([transforms.RandomHorizontalFlip(),transforms.RandomCrop(32, padding=4),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])# 加载CIFAR-10数据集trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=100, shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=100, shuffle=False, num_workers=2)

3. 加载预训练模型

timm库提供了多个预训练模型,这些模型可以在ImageNet等数据集上进行预训练,也可以在其他数据集上进行微调。

加载预训练模型的代码非常简单,下面我们加载需要的预训练模型权重:

import timmm = timm.create_model('vgg16', pretrained=True)
m.eval()

上面代码就会创建一个VGG-16的预训练模型。

3. 训练模型

现在我们可以开始训练模型。我们将使用交叉熵损失函数和Adam优化器:

import torch.optim as optimcriterion = torch.nn.CrossEntropyLoss()optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型
num_epochs = 10device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)for epoch in range(num_epochs):running_loss = 0.0for i, data in enumerate(trainloader, 0):inputs, labels = datainputs, labels = inputs.to(device), labels.to(device)optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()print(f"Epoch {epoch + 1}, Loss: {running_loss / (i + 1)}")

4. 测试模型

训练完成后,我们可以使用测试数据集评估模型的性能:

correct = 0
total = 0model.eval()with torch.no_grad():for data in testloader:images, labels = dataimages, labels = images.to(device), labels.to(device)outputs = model(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Accuracy on test set: {100 * correct / total}%")

5. 缓存路径

一般来说,在 Python 环境中,可能会存放在以下常见位置:

  • Windows: C:\Users\[用户名]\.cache\torch\hub\checkpoints
  • Linux: ~/.cache/torch/hub/checkpoints
  • macOS: ~/Library/Caches/torch/hub/checkpoints

参考文献

【计算机视觉 | Pytorch】timm 包的具体介绍和图像分类案例(含源代码)-CSDN博客

pytorch学习笔记——timm库-CSDN博客 

http://www.lryc.cn/news/474550.html

相关文章:

  • android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
  • 贪心算法入门(一)
  • C# ref和out 有什么区别,分别用在那种场景
  • TikTok直播专线:提升直播效果和体验
  • 由浅入深逐步理解spring boot中如何实现websocket
  • 1-petalinux 问题记录-根文件系统分区问题
  • 微信小程序的上拉刷新与下拉刷新
  • 【大语言模型】ACL2024论文-05 GenTranslate: 大型语言模型是生成性多语种语音和机器翻译器
  • KPRCB结构之ReadySummary和DispatcherReadyListHead
  • 批处理之for语句从入门到精通--呕血整理
  • pycharm小游戏贪吃蛇及pygame模块学习()
  • redis实战--黑马商城 记录
  • 机器人技术革新:人工智能的强力驱动
  • 漫途焊机安全生产监管方案,提升安全生产管理水平!
  • 动态规划之两个数组的 dp(上)
  • DC-9靶机通关
  • 前端注释都应该怎么写?
  • 深入解析缓存模式下的数据一致性问题
  • 嵌入式常用功能之通讯协议1--IIC
  • 【Wi-Fi】Wi-Fi 7(802.11be) Vs Wi-Fi 8 (802.11bn)
  • Ubuntu软件包管理机制
  • SpringBoot详解:概念、优点、运行方式、配置文件、异步请求及异常处理
  • npm install -g @vue/cil 非常卡慢
  • Windows 基础 (二):系统目录与环境变量
  • World of Warcraft [CLASSIC][80][the Ulduar] BOSS 05 06 07
  • World of Warcraft [CLASSIC][80][the Ulduar] BOSS 12 13
  • 第一篇 硬件篇1[学习-来自 正点原子]
  • 【TextIn:开源免费的AI智能文字识别产品(通用文档智能解析识别、OCR识别、文档格式转换、篡改检测、证件识别等)】
  • C++语言有哪些常用语句?
  • linux alsa-lib snd_pcm_open函数源码分析(二)