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

双公示网站专栏建设情况企业营销网站的建设

双公示网站专栏建设情况,企业营销网站的建设,上海品牌网站开发,阳江网页设计培训试听数据准备 CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。 下载后的压缩包解压后会得到几个文件如下: 对应的data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test…

数据准备

CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。

下载后的压缩包解压后会得到几个文件如下:

对应的data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test_batch 是测试集数据,也包含10000张图片。他们的结构是一样的,需要分别对这些data_bach进行处理。

查阅相关文献可知,对应的data_batch都是使用的pickle库进行处理获得的。所以在处理该文件时,也需要使用pickle库进行读取。

编写一段代码脚本,将原来文件拆解成图片,并将训练集图片与测试集图片分别保存在train和test文件夹中可以得到如下图所示结果。

如上图所示,可知对应的训练集数据为5万张,测试集数据为1万张。

对应代码运行结果如下图所示

TIP:其他可选方案,其实torchvision库中的CIFAR库是可以直接加载的。使用代码torchvision.datasets.CIFAR10就可以直接调用库中的数据集。在此,直接下载完全部图片后再进行处理,会更加方便。

torchvision.datasets.CIFAR10用于加载 CIFAR-10 数据集。参数包括:

root:数据集存放的根目录。

train:True 表示加载训练集,False 表示加载测试集。

download:是否下载数据集,如果设置为 True,数据集将会被自动下载到 root 目录下。

transform:用于对数据进行转换的操作。

对上述数据集中数据进行归一化、图像增强等操作。

import torchvision.transforms as transforms# 定义图像预处理操作
transform_train = transforms.Compose([transforms.RandomCrop(32, padding=4),  # 随机裁剪,数据增强transforms.RandomHorizontalFlip(),  # 随机水平翻转,数据增强transforms.ToTensor(),  # 转换为张量transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))  # 归一化
])

使用随机裁剪、水平翻转技术进行数据增强操作,提高后续模型的特征提取能力。

模型构建

使用 PyTorch 构建卷积神经网络模型。设计合适的网络结构,包括卷积层、池化层、全连接层等。搭建的卷积神经网络结构图如下所示

import torch
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Linear, Flattenclass Module(nn.Module):def __init__(self):super(Module, self).__init__()self.model1 = Sequential(  # 效果同上Conv2d(3, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 64, 5, padding=2),MaxPool2d(2),Flatten(),Linear(1024, 64),Linear(64, 10))def forward(self, x):x = self.model1(x)return xif __name__ == '__main__':# 验证网络正确性model = Module()input = torch.ones((64, 3, 32, 32))output = model(input)print(output.shape)  # torch.Size([64, 10])

该卷积神经网络包含了一个卷积层 (Conv2d),输入通道数为3,输出通道数为32,卷积核大小为5x5,使用零填充(padding=2)。一个最大池化层 (MaxPool2d),池化窗口大小为2x2。另一个卷积层,输入通道数为32,输出通道数为32,卷积核大小为5x5,同样使用零填充。另一个最大池化层,池化窗口大小为2x2。还有一个卷积层,输入通道数为32,输出通道数为64,卷积核大小为5x5,零填充。再接一个最大池化层,池化窗口大小为2x2。

然后是将特征展平的层 (Flatten),用于将卷积层输出的特征张量展平成一维向量。

接着是一个全连接层 (Linear),输入大小为1024,输出大小为64。

最后是另一个全连接层,输入大小为64,输出大小为10。这里的10代表着输出类别的数量。

后面函数解释:

def forward(self, x)是模型的前向传播函数,定义了数据从输入到输出的流程。

x = self.model1(x):这里将输入数据 x 输入到 model1 中,进行前向传播计算。

return x:返回模型的输出结果。

if __name__ == '__main__'::这是Python中的常用写法,用于判断当前脚本是否作为主程序执行。

model = Module():创建了一个模型对象 model,实例化了前面定义的 Module 类。

input = torch.ones((64, 3, 32, 32)):创建了一个大小为64x3x32x32的张量作为输入数据,表示64个样本,每个样本的图像大小为32x32,通道数为3(假设是RGB图像)。

output = model(input):将输入数据输入到模型中进行前向传播计算,得到输出结果。

print(output.shape):打印输出结果的形状,这里输出的形状为 torch.Size([64, 10]),表示有64个样本,每个样本对应一个长度为10的输出向量,其中每个元素表示对应类别的预测分数或概率。

对应构建的卷积神经网络结构图如下图所示:

模型训练

定义损失函数和优化器。将数据集分为训练集和验证集。在训练集上训练模型,通过验证集调整模型参数,避免过拟合。

# 6损失函数
loss_fn = nn.CrossEntropyLoss()# 7优化器
learning_rate = 1e-2
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)# 8设置训练网络的一些参数
total_train_step = 0  # 记录训练次数
total_test_step = 0  # 记录测试次数
epoch = 10  # 训练的轮数

损失函数、优化器如上所示,损失函数使用交叉熵损失函数,优化器中学习率learning rate为0.01,优化器使用SGD优化器。

模型评估

使用测试集评估模型性能,计算准确率等指标。

随着训练次数增加,模型在测试集上面的整体损失LOSS一直在下降,正确率一直在提升。训练准确率在第34轮训练时到达66.7%

可视化展示

通过表格展示准确率等实验结果。绘制准确率和损失函数随训练轮次变化的曲线图。随机选取部分图像,展示模型的预测结果和真实标签。

此处的可视化使用了tensorboard展示板结合日志文件进行展示

tensorboard --logdir=logs

logs代表着日志文件对应的文件夹所在位置

使用上面代码进行读取代码运行产生的日志文件。

TIP:日志文件所在的文件夹路径中不能存在中文路径,否则会报错。

import torch
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torchvision.datasets import CIFAR10
import matplotlib.pyplot as plt
import numpy as np# 加载测试数据集
test_data = CIFAR10(root="data", train=False, transform=transforms.ToTensor(), download=True)
test_loader = DataLoader(test_data, batch_size=16, shuffle=True)# 定义类别名称
classes = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']# 加载模型
model = torch.load(r"C:\Users\Lenovo\Desktop\计算机视觉实验\实验2\CIFAR-10\200轮训练权重\model_34.pth")  # 假设模型保存在 model.pth 中# 设置模型为评估模式
model.eval()# 从测试数据集中随机选择一批图像和标签
images, labels = next(iter(test_loader))# 对图像进行预测
with torch.no_grad():outputs = model(images)_, predicted = torch.max(outputs, 1)# 将图像、预测结果和真实标签组合在一起并展示
fig, axes = plt.subplots(4, 4, figsize=(12, 12))
for i, ax in enumerate(axes.flat):image = images[i].permute(1, 2, 0)  # 将图像从 (C, H, W) 转换为 (H, W, C)label = labels[i]prediction = predicted[i]ax.imshow(image)ax.axis('off')ax.set_title(f'Predicted: {classes[prediction]}, Actual: {classes[label]}',fontsize=10)plt.show()

识别效果如上图所示.

http://www.15wanjia.com/news/178457.html

相关文章:

  • 装饰网站建设效果图西安企业查询
  • js 取网站域名网站建设丶金手指下拉13
  • 如何攻克网站vultr做网站
  • 做时尚网站的目的服装设计80%的人会转行
  • 网站优化怎么做ppt怎么在百度做原创视频网站
  • 兰州seo网站建设竹溪网站建设
  • 大连 模板网站南昌网站推广排名
  • 杭州网站定制国外做ui的网站j
  • 动漫做a视频网站有哪些手机百度网站建设
  • 做网站网络营销注意如何建立网站的快捷方式
  • 江苏省住房与城乡建设部网站企业系统公示系统
  • 怎么做网站效果图网站被攻击了怎么办
  • 南京外贸网站建设案例学校网站平台建设
  • 杭州自助建站网站上海网页建站模板
  • 建设银行网站下载中心上海雍熙
  • 分类门户网站系统网站建设中采用的技术
  • 音乐网站程序源码做网站需要服务器查询吗
  • 网站备案 网站名称wordpress链接插件
  • 南宁企业网站建设为什么网络经营者要有自己的网站
  • 企业网站营销如何建设个人做网站下载网上图可以吗
  • 美仑美家具的网站谁做的阿里巴巴网站图片怎么做的
  • 经典企业网站欣赏威海网
  • 北京南站列车时刻表金乡县网站开发
  • 九龙坡网站建设哪家好5个搜索引擎作弊的网站
  • 基于asp.net电子商务网站开发实践中的关键技术和应用湖北百度关键词排名软件
  • 织梦网站环境搭建中国建设银行官企业网站
  • 做外贸的网站有何用处百度运营公司
  • 重庆企业做网站wordpress 幻灯片 文章
  • 建设治安总队网站目的陇城科技网站建设
  • 办公家具网站模板wordpress多重标签