pytorch神经网络训练(VGG-19)

VGG-19

  1. 导包
import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt
  1. 数据预处理和增强
transform = transforms.Compose([transforms.Resize((224, 224)),  

调整图像大小为 224x224像素,符合VGG16输入

    

transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),  ])

使用ImageNet的标准化参数

  1. 加载数据集
data_path = "D:\\图像处理、深度学习\\flowers"dataset = datasets.ImageFolder(data_path, transform=transform)
  1. 划分训练集和测试集
train_size = int(0.8 * len(dataset))test_size = len(dataset) - train_sizetrain_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_size, test_size])
  1. 创建数据加载器
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)
  1. 使用预训练的VGG16模型
model = torchvision.models.vgg19(pretrained=True)
  1. 修改全连接层以适应新的分类任务
num_classes = len(dataset.classes)model.classifier[6] = nn.Linear(4096, num_classes)
  1. 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(model.parameters())
  1. 将模型移动到GPU(如果可用)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)
  1. 初始化列表来存储每个epoch的损失和准确率
train_losses = []train_accuracies = []

  1. 训练模型
num_epochs = 30  

定义训练的轮数为30轮

for epoch in range(num_epochs):  model.train()  running_loss = 0.0   correct = 0  total = 0  

开始训练循环,将模型设置为训练模式初始化累计损失为0.0,初始化正确预测的数量为0,初始化总样本数量为0

for inputs, labels in train_loader:  

遍历训练数据加载器中的每个批次

inputs, labels = inputs.to(device), labels.to(device)  optimizer.zero_grad()  

将输入和标签移动到定义的设备上(如GPU),清空模型的梯度

 outputs = model(inputs)  loss = criterion(outputs, labels)  

将输入传递给模型以获得输出,计算输出和标签之间的损失

loss.backward()  optimizer.step()  running_loss += loss.item()  

反向传播损失以计算梯度,更新模型的参数,累计批次损失

        _, predicted = torch.max(outputs.data, 1)  

获取每个样本的最高预测值

 total += labels.size(0)  correct += (predicted == labels).sum().item()  

累计总样本数量,累计正确预测的样本数量

epoch_loss = running_loss / len(train_loader)  

计算平均损失

epoch_accuracy = 100 * correct / total  

计算准确率

train_losses.append(epoch_loss)  train_accuracies.append(epoch_accuracy)  

将损失添加到训练损失列表中,将准确率添加到训练准确率列表中

print(f'Epoch {epoch + 1}/{num_epochs}, Loss: {epoch_loss}, Accuracy: {epoch_accuracy}%')  

打印轮数、损失和准确率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Go 中如何让结构体不可比较?

最近我在使用 Go 官方出品的结构化日志包 slog 时,看到 slog.Value 源码中有一个比较好玩的小 Tips,可以限制两个结构体之间的相等性比较,本文就来跟大家分享下。 在 Go 中结构体可以比较吗? 在 Go 中结构体可以比较吗&#xff…

鸿蒙开发HarmonyOS NEXT(一)

最近总听见大家讨论鸿蒙,前端转型的好方向?先入门学习下 目前官方版本和文档持续更新中 一、开发环境 提示:要占用的空间比较多,建议安装在剩余空间多的盘 1、下载:官网最新工具 - 下载中心 - 华为开发者联盟 (huaw…

RTL8305NB从电口模式切换为光口模式

对于RTL8305NB,要从电口模式切换为光口模式,主要操作涉及到PHY page的切换和特定寄存器的配置。以下是详细的操作步骤: PHY Page切换: 首先,需要访问PHY地址8的寄存器31。这个寄存器用于Page的切换。向PHY地址8的寄存…

从删库到还原

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 从删库到还原 魔法一魔法二魔法三魔法四查看是否开启binlog,且format为row执行以下命…

WAV怎么转mp3?将wav转成MP3的几种方法介绍

WAV怎么转mp3?很多情况下,我们可能需要将高质量的 WAV 文件转换为更小、更兼容的 MP3 文件。例如,你可能想要为你的音乐收藏腾出更多存储空间,或者需要将音频文件上传到联网平台,而这些平台通常对文件大小有严格限制。…

会声会影2024免费版下载无需激活码序列号

亲爱的影像爱好者们,今天我要和大家分享的是一款让我彻底着迷的软件——会声会影2024!自从用了它,我的视频编辑技能简直突飞猛进,每次上传作品到小红书都能收获满满的赞👍。接下来,就让我带你一起探索这个神…

window系统忘记密码解决方案

原理 通过命令修改粘滞键的作用打开cmd命令,通过cmd命令修改用户密码。 1.进入系统自动恢复页面 各品牌进入恢复页面各不一样,一般按住shift重启电脑即可,笔者的惠普电脑是开机按住F11键。页面如下: 之后选择 - > 疑难解答…

阿里云nginx更新证书后依旧显示旧证书

尝试的解决办法 重启nginx服务删除服务器上的旧证书清除浏览器缓存检查是否使用CDN服务 最后的解决办法 云服务器开启了WAF服务,在WAF服务中配置证书

ssm 宠物领养系统-计算机毕业设计源码08465

目 录 摘要 1 绪论 1.1课题背景及意义 1.2研究现状 1.3ssm框架介绍 1.3论文结构与章节安排 2 宠物领养系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 …

web开发学习(web简单入门)

前言: 从我刚接触博客没多久我就萌发了搭建一个个人博客网站的想法(用来装逼),但碍于学校屁事太多迟迟没有开始,最近学校课已经都差不多结课了,距离期末还有一段时间,我也得以抽出时间来学习我一…

js实现blockly后台解释器,可以单步执行,可以调用c/c++函数

实现原理 解析blockly语法树,使用js管理状态,实际使用lua执行,c/c++函数调用使用lua调用c/c++函数的能力 可以单行执行 已实现if功能 TODO for循环功能 函数功能 单步执行效果图 直接执行效果图 源代码 //0 暂停 1 单步执行 2 断点 //创建枚举 var AstStatus = {PAUS…

35、正则表达式

一、正则表达式命令 正则表达式:匹配的是文本内容,linux的文本三剑客都是针对文本内容。 ​ grep 过滤文本内容 ​ sed 针对文本内容进行增删改查 ​ awk 按行取列 文本三剑客----都是按照行进行匹配。 1.1、grep筛选: grep的作用就是…

私有化地图离线部署方案之查询定位服务

私有化地图离线部署整体解决方案,除硬件之外,一般主要由基础地图服务、查询定位服务、路径规划服务和高程检索服务构成。 其中,查询定位服务是指地理编码与逆地理编码服务。 在《私有化地图离线部署方案之基础地图服务》一文中,…

不懂电路搭建可以学嵌入式编程开发吗?

当然可以学嵌入式编程开发!虽然电路搭建是嵌入式开发中的一部分,但即使你对电路搭建不太了解,也可以从嵌入式编程开发入手。刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0…

宝塔面板部署前端项目

部署前端项目 1 打包自己的项目2 登录宝塔面板3 添加站点4 设置域名5 进入当前站点对应的文件目录中6 上传打包后的文件7 访问网站 1 打包自己的项目 2 登录宝塔面板 点击左侧“网站”菜单进入对应页面 点击“添加站点” 3 添加站点 填写域名,如果没有域名的&am…

集成openfeign

集成feign有两种方式. 1.集成到所需项目中(只有该项目可以用)直接引用所需调用的项目 2.集成到公共项目(通用) 1.集成到所需项目中(只有该项目可以用) 再需要消费的服务 进行依赖的引用 1.引入依赖,openfeign,和所需调用的服务 <!--feign--><dependency><gro…

【研究】AI大模型需要什么样的硬件?

关注AI大模型 x 硬件的两条思路 从22年11月OpenAI推出ChatGPT至今&#xff0c;我们看到Chatbot应用的能力不断增强&#xff0c;从最初的文字问答&#xff0c;迅速向具有自主记忆、推理、规划和执行的全自动能力的AI Agent发展。我们认为端侧智能是大模型发展的重要分支。建议投…

Open WebUI升级到最新版本

背景介绍 open-webui是一个用于构建Web用户界面的开源库&#xff0c;它仿照 ChatGPT 的图形化界面&#xff0c;可以非常方便的调试、调用本地大语言模型。 目前该开源库更新较为活跃&#xff0c;从3个月前的版本&#xff08;v0.1.108&#xff09;到截止到2024年6月中旬发布的…

电脑开机后出现Aptio Setup Utility 处理方法

电脑开机后出现Aptio Setup Utility怎么处理 Aptio Setup Utility界面的原因&#xff1a; 这是由于 bios设置与真实的硬件情况不匹配硬盘故障找不到可启动的硬盘情况 我的问题是找不到可启动的硬盘情况 解决方式如下&#xff1a; 进入如下界面了&#xff0c;选择Boot选项…

通过语言模型奖励实现视频大型多模态模型的直接偏好优化

在人工智能领域&#xff0c;大模型&#xff08;LLM&#xff09;的泛化能力一直是研究的重点。最新的研究通过直接偏好优化&#xff08;DPO&#xff09;技术&#xff0c;显著提升了LLM在视频指令跟随等任务中的表现。然而&#xff0c;提供信息丰富的反馈以检测生成响应中的幻觉现…