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

泉州 网站制作网页设计实训报告2000字

泉州 网站制作,网页设计实训报告2000字,拍网制作方法图片大全,为什么有的网站点不开pytorch迁移学习训练图像分类 一、环境配置二、迁移学习关键代码三、完整代码四、结果对比 代码和图片等资源均来源于哔哩哔哩up主#xff1a;同济子豪兄 讲解视频#xff1a;Pytorch迁移学习训练自己的图像分类模型 一、环境配置 1#xff0c;安装所需的包 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/simple2安装Pytorch pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1133创建目录 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(pretrainedTrue) # 载入预训练模型 # 修改全连接层使得全连接层的输出与 当前数据集类别数n_class 对应 model.fc nn.Linear(model.fc.in_features, n_class) # 只微调训练最后一层全连接层的参数其它层冻结 optimizer optim.Adam(model.fc.parameters())选择二微调训练所有层。 适用于训练数据集与预训练模型相差大时可以选择微调训练所有层此时只使用预训练模型的部分权重和特征例如原始模型为imageNet而训练数据为医疗相关 model models.resnet18(pretrainedTrue) # 载入预训练模型 model.fc nn.Linear(model.fc.in_features, n_class) optimizer optim.Adam(model.parameters())选择三随机初始化模型全部权重从头训练所有层 model models.resnet18(pretrainedFalse) # 只载入模型结构不载入预训练权重参数 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_sizeBATCH_SIZE,shuffleTrue,num_workers4)# 测试集的数据加载器 test_loader DataLoader(test_dataset,batch_sizeBATCH_SIZE,shuffleFalse,num_workers4)from torchvision import models import torch.optim as optim# 选择一只微调训练模型最后一层全连接分类层 model models.resnet18(pretrainedTrue) # 载入预训练模型 # 修改全连接层使得全连接层的输出与当前数据集类别数对应 # 新建的层默认 requires_gradTrue指定张量需要梯度计算 model.fc nn.Linear(model.fc.in_features, n_class) model.fc # 查看全连接层 # 只微调训练最后一层全连接层的参数其它层冻结 optimizer optim.Adam(model.fc.parameters()) # optim 是 PyTorch 的一个优化器模块用于实现各种梯度下降算法的优化方法# 选择二微调训练所有层 # 训练数据集与预训练模型相差大时可以选择微调训练所有层只使用预训练模型的部分权重和特征例如原始模型为imageNet训练数据为医疗相关 # model models.resnet18(pretrainedTrue) # 载入预训练模型 # model.fc nn.Linear(model.fc.in_features, n_class) # optimizer optim.Adam(model.parameters())# 选择三随机初始化模型全部权重从头训练所有层 # model models.resnet18(pretrainedFalse) # 只载入模型结构不载入预训练权重参数 # 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% 总体而言迁移学习能够利用已有的知识和经验加速模型的训练过程提高模型的性能。
http://www.w-s-a.com/news/800453/

相关文章:

  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易
  • 可以做免费广告的网站有哪些做视频赚钱的国外网站
  • 苏州做物流网站电话郑州网站高端网站设计
  • 网站建设音乐插件怎么弄wordpress添加数据库文件
  • 汽车行业做网站福建省第二电力建设公司网站
  • delphi做网站开发商城网站建设价位
  • 网站宣传片3 阐述网站建设的步骤过程 9分
  • 公司网站怎么做站外链接哪里有做胎儿dna亲子鉴定
  • 潍坊做电商的网站建设wordpress 特效主题
  • 做网站和app哪个难公司网上注册系统
  • 关于网站建设外文文献系部网站建设