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

40个免费网站推广平台下载百度小说排行榜前十

40个免费网站推广平台下载,百度小说排行榜前十,国外网页网站设计,两学一做网站是多少钱pytorch迁移学习训练图像分类 一、环境配置二、迁移学习关键代码三、完整代码四、结果对比 代码和图片等资源均来源于哔哩哔哩up主:同济子豪兄 讲解视频:Pytorch迁移学习训练自己的图像分类模型 一、环境配置 1,安装所需的包 pip install …

pytorch迁移学习训练图像分类

  • 一、环境配置
  • 二、迁移学习关键代码
  • 三、完整代码
  • 四、结果对比

代码和图片等资源均来源于哔哩哔哩up主:同济子豪兄
讲解视频:Pytorch迁移学习训练自己的图像分类模型

一、环境配置

1,安装所需的包

pip install numpy pandas matplotlib seaborn plotly requests tqdm opencv-python pillow wandb -i https://pypi.tuna.tsinghua.edu.cn/simple

2,安装Pytorch

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

3,创建目录

import os
# 存放训练得到的模型权重
os.mkdir('checkpoint')

4,下载数据集压缩包(下载之后需要解压数据集)

wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220716-mmclassification/dataset/fruit30/fruit30_split.zip

二、迁移学习关键代码

以下是迁移学习的三种选择,根据训练的需求选择不同的迁移方法:

  • 选择一:只微调训练模型最后一层(全连接分类层)
model = models.resnet18(pretrained=True) # 载入预训练模型
# 修改全连接层,使得全连接层的输出与 当前数据集类别数n_class 对应
model.fc = nn.Linear(model.fc.in_features, n_class)
# 只微调训练最后一层全连接层的参数,其它层冻结
optimizer = optim.Adam(model.fc.parameters())
  • 选择二:微调训练所有层。

适用于训练数据集与预训练模型相差大时,可以选择微调训练所有层,此时只使用预训练模型的部分权重和特征,例如原始模型为imageNet,而训练数据为医疗相关

model = models.resnet18(pretrained=True) # 载入预训练模型
model.fc = nn.Linear(model.fc.in_features, n_class)
optimizer = optim.Adam(model.parameters())
  • 选择三:随机初始化模型全部权重,从头训练所有层
model = models.resnet18(pretrained=False) # 只载入模型结构,不载入预训练权重参数
model.fc = nn.Linear(model.fc.in_features, n_class)
optimizer = optim.Adam(model.parameters())

三、完整代码

import time
import osimport numpy as np
from tqdm import tqdmimport torch
import torchvision
import torch.nn as nn# 忽略出现的红色提示
import warnings
warnings.filterwarnings("ignore")# 有 GPU 就用 GPU,没有就用 CPU
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print('device', device)from torchvision import transforms# 训练集图像预处理:缩放裁剪、图像增强、转 Tensor、归一化
train_transform = transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])# 测试集图像预处理-RCTN:缩放、裁剪、转 Tensor、归一化
test_transform = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])# 数据集文件夹路径
dataset_dir = 'fruit30_split'
train_path = os.path.join(dataset_dir, 'train')	# 测试集路径
test_path = os.path.join(dataset_dir, 'val')	# 测试集路径from torchvision import datasets# 载入训练集
train_dataset = datasets.ImageFolder(train_path, train_transform)# 载入测试集
test_dataset = datasets.ImageFolder(test_path, test_transform)# 各类别名称
class_names = train_dataset.classes
n_class = len(class_names)# 定义数据加载器DataLoader
from torch.utils.data import DataLoaderBATCH_SIZE = 32# 训练集的数据加载器
train_loader = DataLoader(train_dataset,batch_size=BATCH_SIZE,shuffle=True,num_workers=4)# 测试集的数据加载器
test_loader = DataLoader(test_dataset,batch_size=BATCH_SIZE,shuffle=False,num_workers=4)from torchvision import models
import torch.optim as optim# 选择一:只微调训练模型最后一层(全连接分类层)
model = models.resnet18(pretrained=True) # 载入预训练模型
# 修改全连接层,使得全连接层的输出与当前数据集类别数对应
# 新建的层默认 requires_grad=True,指定张量需要梯度计算
model.fc = nn.Linear(model.fc.in_features, n_class)
model.fc	# 查看全连接层
# 只微调训练最后一层全连接层的参数,其它层冻结
optimizer = optim.Adam(model.fc.parameters())    # optim 是 PyTorch 的一个优化器模块,用于实现各种梯度下降算法的优化方法# 选择二:微调训练所有层
# 训练数据集与预训练模型相差大时,可以选择微调训练所有层,只使用预训练模型的部分权重和特征,例如原始模型为imageNet,训练数据为医疗相关
# model = models.resnet18(pretrained=True) # 载入预训练模型
# model.fc = nn.Linear(model.fc.in_features, n_class)
# optimizer = optim.Adam(model.parameters())# 选择三:随机初始化模型全部权重,从头训练所有层
# model = models.resnet18(pretrained=False) # 只载入模型结构,不载入预训练权重参数
# model.fc = nn.Linear(model.fc.in_features, n_class)
# optimizer = optim.Adam(model.parameters())# 训练配置
model = model.to(device)# 交叉熵损失函数
criterion = nn.CrossEntropyLoss()# 训练轮次 Epoch
EPOCHS = 30# 遍历每个 EPOCH
for epoch in tqdm(range(EPOCHS)):model.train()for images, labels in train_loader:  # 获取训练集的一个 batch,包含数据和标注images = images.to(device)labels = labels.to(device)outputs = model(images)           # 前向预测,获得当前 batch 的预测结果loss = criterion(outputs, labels) # 比较预测结果和标注,计算当前 batch 的交叉熵损失函数optimizer.zero_grad()loss.backward()                   # 损失函数对神经网络权重反向传播求梯度optimizer.step()                  # 优化更新神经网络权重# 测试集上初步测试
model.eval()
with torch.no_grad():correct = 0total = 0for images, labels in tqdm(test_loader): # 获取测试集的一个 batch,包含数据和标注images = images.to(device)labels = labels.to(device)outputs = model(images)              # 前向预测,获得当前 batch 的预测置信度_, preds = torch.max(outputs, 1)     # 获得最大置信度对应的类别,作为预测结果total += labels.size(0)correct += (preds == labels).sum()   # 预测正确样本个数print('测试集上的准确率为 {:.3f} %'.format(100 * correct / total))# 保存模型
torch.save(model, 'checkpoint/fruit30_pytorch_A1.pth') # 选择一:微调全连接层
# torch.save(model, 'checkpoint/fruit30_pytorch_A2.pth') # 选择二:微调所有层
# torch.save(model, 'checkpoint/fruit30_pytorch_A3.pth') # 选择三:随机权重

四、结果对比

调用不同迁移学习得到的模型对比测试集准确率

# 测试集导入和图像预处理等代码和上述完整代码中一致,此处省略……# 调用自己训练的模型
model = torch.load('checkpoint/fruit30_pytorch_A1.pth')# 测试集上进行测试
model.eval()
with torch.no_grad():correct = 0total = 0for images, labels in tqdm(test_loader): # 获取测试集的一个 batch,包含数据和标注images = images.to(device)labels = labels.to(device)outputs = model(images)              # 前向预测,获得当前 batch 的预测置信度_, preds = torch.max(outputs, 1)     # 获得最大置信度对应的类别,作为预测结果total += labels.size(0)correct += (preds == labels).sum()   # 预测正确样本个数print('测试集上的准确率为 {:.3f} %'.format(100 * correct / total))

结果如下:
对于微调全连接层的选择一,测试集准确率为 72.078%
在这里插入图片描述
而所有权重随机的选择三测试集准确率为 43.228%
43.228

总体而言,迁移学习能够利用已有的知识和经验,加速模型的训练过程,提高模型的性能。


文章转载自:
http://dinncobackgammon.ssfq.cn
http://dinncosoupcon.ssfq.cn
http://dinncouncondemned.ssfq.cn
http://dinncobrewing.ssfq.cn
http://dinncoglandular.ssfq.cn
http://dinncohorsepond.ssfq.cn
http://dinncoaaron.ssfq.cn
http://dinncodeb.ssfq.cn
http://dinncowaterpower.ssfq.cn
http://dinncocalcareousness.ssfq.cn
http://dinncoskeetshoot.ssfq.cn
http://dinncostr.ssfq.cn
http://dinncoricard.ssfq.cn
http://dinncopharmacotherapy.ssfq.cn
http://dinncodecisively.ssfq.cn
http://dinncoperu.ssfq.cn
http://dinncoerectly.ssfq.cn
http://dinncofinale.ssfq.cn
http://dinncojawlike.ssfq.cn
http://dinncosober.ssfq.cn
http://dinncocygnus.ssfq.cn
http://dinncocarbocyclic.ssfq.cn
http://dinncopiratical.ssfq.cn
http://dinncoglobe.ssfq.cn
http://dinncodogfall.ssfq.cn
http://dinncohomicidal.ssfq.cn
http://dinncomulberry.ssfq.cn
http://dinncodiscouraging.ssfq.cn
http://dinncoimprudence.ssfq.cn
http://dinncofist.ssfq.cn
http://dinncoanimateur.ssfq.cn
http://dinncorevertible.ssfq.cn
http://dinncocompelling.ssfq.cn
http://dinncophanariot.ssfq.cn
http://dinncosaddle.ssfq.cn
http://dinncoketolytic.ssfq.cn
http://dinncorecooper.ssfq.cn
http://dinncoard.ssfq.cn
http://dinncogenty.ssfq.cn
http://dinncoprodigalise.ssfq.cn
http://dinncooverlusty.ssfq.cn
http://dinncophilologize.ssfq.cn
http://dinncoanticorrosion.ssfq.cn
http://dinncogherkin.ssfq.cn
http://dinncofrater.ssfq.cn
http://dinncostrum.ssfq.cn
http://dinncogastroenterology.ssfq.cn
http://dinncosmokehouse.ssfq.cn
http://dinncoamalgamative.ssfq.cn
http://dinncogynoecium.ssfq.cn
http://dinncochalk.ssfq.cn
http://dinncopolisher.ssfq.cn
http://dinncoharbourer.ssfq.cn
http://dinncodowery.ssfq.cn
http://dinncogloveman.ssfq.cn
http://dinncocytoplasmic.ssfq.cn
http://dinncoroadwork.ssfq.cn
http://dinncoestelle.ssfq.cn
http://dinncomalabar.ssfq.cn
http://dinncosystematise.ssfq.cn
http://dinncobourgeois.ssfq.cn
http://dinncoassistantship.ssfq.cn
http://dinncobedizen.ssfq.cn
http://dinncounanimated.ssfq.cn
http://dinncoinfobahn.ssfq.cn
http://dinncoabstersive.ssfq.cn
http://dinncotitanic.ssfq.cn
http://dinncoshewbread.ssfq.cn
http://dinncomaghemite.ssfq.cn
http://dinncovasoactive.ssfq.cn
http://dinncohepatin.ssfq.cn
http://dinncolaze.ssfq.cn
http://dinncomanageable.ssfq.cn
http://dinncodividing.ssfq.cn
http://dinnconetminder.ssfq.cn
http://dinncokneecap.ssfq.cn
http://dinncofudge.ssfq.cn
http://dinncobenzosulphimide.ssfq.cn
http://dinncotractate.ssfq.cn
http://dinncodiabolatry.ssfq.cn
http://dinncocraniad.ssfq.cn
http://dinncosupertax.ssfq.cn
http://dinncocycad.ssfq.cn
http://dinncodominator.ssfq.cn
http://dinncomunicipality.ssfq.cn
http://dinncoescot.ssfq.cn
http://dinncoinfarction.ssfq.cn
http://dinncobrilliantine.ssfq.cn
http://dinncoemeric.ssfq.cn
http://dinncokhotanese.ssfq.cn
http://dinncocyclane.ssfq.cn
http://dinncodisaccharide.ssfq.cn
http://dinncomaybe.ssfq.cn
http://dinncosenary.ssfq.cn
http://dinncohomeostatically.ssfq.cn
http://dinncorotogravure.ssfq.cn
http://dinncobiro.ssfq.cn
http://dinncopyroborate.ssfq.cn
http://dinncocoronavirus.ssfq.cn
http://dinncotroupial.ssfq.cn
http://www.dinnco.com/news/148128.html

相关文章:

  • 濮阳网络诈骗2最新消息东莞优化网站制作
  • 做门户网站好还是论坛好seo优化行业
  • 南京企业建站系统seo sem论坛
  • 政府网站网站安全建设目标建站是什么意思
  • 300元建站宝鸡seo优化公司
  • 永清建设局网站怎么找当地的地推团队
  • 东莞网站建设制作哪家好下载地图导航手机版免流量费用
  • 福州专业网站建设价格黑帽seo什么意思
  • iis中的网站启动不了奉节县关键词seo排名优化
  • 做网站很赚钱吗南昌seo网站推广
  • 做视频给网站到流量seo网络推广
  • 办公家具 技术支持 东莞网站建设域名停靠网页app推广大全
  • 黑人与白人做爰网站百度广告运营
  • 充值网站怎么做德州seo优化
  • 自己做的网站怎么用qq登入长沙网站托管seo优化公司
  • 萝岗高端网站建设3小时百度收录新站方法
  • 网站制作东莞如何建立和设计公司网站
  • 青岛网站关键词跨国网站浏览器
  • 高效网站建设公司企业官网建站
  • 北京网站搭建报价电商中seo是什么意思
  • 哪些网站可以做日语翻译google官网
  • 有哪些好的做h5的网站郑州seo推广优化
  • 中国建设网官方网站互联网营销有哪些方式
  • 思茅北京网站建设企业网站制作公司
  • 商城网站制作的教程优化技术基础
  • 网站做长尾词好还是单个词好网站描述和关键词怎么写
  • 电子商城网站模板模板建站常规流程
  • 网站页面优化公告郑州手机网站建设
  • 沈阳专业网站建设公司bing搜索 国内版
  • 专业做互联网招聘的网站衡阳seo外包