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

游戏微网站模板哪些网站在哪找的

游戏微网站模板,哪些网站在哪找的,重庆专业网站定制,网页设计需要会什么目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集#xff08;CIFAR10Dataset#xff09; a. read_csv_labels#xff08;#xff09; b. CIFAR10Dataset 2. 构建模型#xff08;FeedForward#x…目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集CIFAR10Dataset a. read_csv_labels b. CIFAR10Dataset 2. 构建模型FeedForward 3.整合训练、评估、预测过程Runner 4. __main__ 5. 代码整合 一、实验介绍 本实验实现了实现深度残差神经网络ResNet并基于此完成图像分类任务。 残差网络ResNet是一种深度神经网络架构用于解决深层网络训练过程中的梯度消失和梯度爆炸问题。通过引入残差连接residual connection来构建网络层与层之间的跳跃连接使得网络可以更好地优化深层结构。         残差网络的一个重要应用是在图像识别任务中特别是在深度卷积神经网络CNN中。通过使用残差模块可以构建非常深的网络例如ResNet其在ILSVRC 2015图像分类挑战赛中取得了非常出色的成绩。         在ResNet中每个残差块由一个或多个卷积层组成其中包含了跳跃连接。跳跃连接将输入直接添加到残差块的输出中从而使得网络可以学习残差函数即残差块只需学习将输入的变化部分映射到输出而不需要学习完整的映射关系。这种设计有助于减轻梯度消失问题使得网络可以更深地进行训练。 二、实验环境 本系列实验使用了PyTorch深度学习框架相关操作如下 1. 配置虚拟环境 conda create -n DL python3.7  conda activate DL pip install torch1.8.1cu102 torchvision0.9.1cu102 torchaudio0.8.1 -f https://download.pytorch.org/whl/torch_stable.htmlconda install matplotlib conda install scikit-learn 2. 库版本介绍 软件包本实验版本目前最新版matplotlib3.5.33.8.0numpy1.21.61.26.0python3.7.16scikit-learn0.22.11.3.0torch1.8.1cu1022.0.1torchaudio0.8.12.0.2torchvision0.9.1cu1020.15.2 三、实验内容 0. 导入必要的工具包 import torch from torch import nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from torchvision.io import read_image 1. 构建数据集CIFAR10Dataset CIFAR10数据集共有60000个样本每个样本都是一张32*32像素的RGB图像彩色图像每个RGB图像又必定分为3个通道R通道、G通道、B通道。CIFAR10中有10类物体标签值分别按照0~9来区分,他们分别是飞机 airplane 、汽车 automobile 、鸟 bird 、猫 cat 、鹿 deer 、狗 dog 、青蛙 frog 、马 horse 、船 ship 和卡车 truck 。为减小运行时间本实验选取其中1000张作为训练集。 数据集链接 CIFAR-10 and CIFAR-100 datasets (toronto.edu)http://www.cs.toronto.edu/~kriz/cifar.html a. read_csv_labels 从CSV文件中读取标签信息并返回一个标签字典。 def read_csv_labels(fname):读取fname来给标签字典返回一个文件名with open(fname, r) as f:# 跳过文件头行(列名)lines f.readlines()[1:]tokens [l.rstrip().split(,) for l in lines]return dict(((name, label) for name, label in tokens)) 使用open函数打开指定文件名的CSV文件并将文件对象赋值给变量f。这里使用r参数以只读模式打开文件。 使用文件对象的readlines()方法读取文件的所有行并将结果存储在名为lines的列表中。通过切片操作[1:]跳过了文件的第一行列名将剩余的行存储在lines列表中。 列表推导式list comprehension对lines列表中的每一行进行处理。对于每一行使用rstrip()方法去除行末尾的换行符并使用split(,)方法将行按逗号分割为多个标记。最终将所有行的标记组成的子列表存储在tokens列表中。 使用字典推导式dictionary comprehension将tokens列表中的子列表转换为字典。对于tokens中的每个子列表将子列表的第一个元素作为键name第二个元素作为值label最终返回一个包含这些键值对的字典。 b. CIFAR10Dataset class CIFAR10Dataset(Dataset):def __init__(self, folder_path, fname):self.labels read_csv_labels(os.path.join(folder_path, fname))self.folder_path os.path.join(folder_path, train)def __len__(self):return len(self.labels)def __getitem__(self, idx):img read_image(self.folder_path / str(idx 1) .png)label self.labels[str(idx 1)]return img, torch.tensor(int(label)) 构造函数 接受两个参数 folder_path表示数据集所在的文件夹路径 fname表示包含标签信息的文件名。 调用read_csv_labels函数传递folder_path和fname作为参数以读取CSV文件中的标签信息并将返回的标签字典存储在self.labels变量中。 通过拼接folder_path和字符串train来构建数据集的文件夹路径将结果存储在self.folder_path变量中。 def __len__(self) 这是CIFAR10Dataset类的方法用于返回数据集的长度即样本的数量。 def __getitem__(self, idx): 这是CIFAR10Dataset类的方法用于根据给定的索引idx获取数据集中的一个样本。它首先根据索引idx构建图像文件的路径并调用read_image函数来读取图像数据将结果存储在img变量中。然后它通过将索引转换为字符串并使用该字符串作为键来从self.labels字典中获取相应的标签将结果存储在label变量中。最后它返回一个元组包含图像数据和经过torch.tensor转换的标签。 2. 构建模型FeedForward 参考前文 【深度学习实验】卷积神经网络七实现深度残差神经网络ResNet-CSDN博客https://blog.csdn.net/m0_63834988/article/details/133705834 3.整合训练、评估、预测过程Runner 参考前文 【深度学习实验】前馈神经网络九整合训练、评估、预测过程Runner_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/133219448?spm1001.2014.3001.5501 4. __main__ if __name__ __main__:batch_size 20# 构建训练集train_data CIFAR10Dataset(cifar10_tiny, trainLabels.csv)train_iter DataLoader(train_data, batch_sizebatch_size)# 构建测试集test_data CIFAR10Dataset(cifar10_tiny, trainLabels.csv)test_iter DataLoader(test_data, batch_sizebatch_size)# 模型训练num_classes 10# 定义模型model ResNet(num_classes)# 定义损失函数loss_fn F.cross_entropy# 定义优化器optimizer torch.optim.SGD(model.parameters(), lr0.1)runner Runner(model, optimizer, loss_fn, metricNone)runner.train(train_iter, num_epochs10, save_pathchapter_5)# 模型预测runner.load_model(chapter_5.pth)x, label next(iter(test_iter))predict torch.argmax(runner.predict(x.float()), dim1)print(predict:, predict)print( label:, label) 5. 代码整合 # 导入必要的工具包 import torch from torch import nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from torchvision.io import read_image# 残差连接, 输入和输出的维度有时是相同的, 有时是不同的, 所以需要 use_1x1conv来判断是否需要 class Residual(nn.Module):def __init__(self, input_channels, num_channels, use_1x1convFalse, strides1):super().__init__()self.conv1 nn.Conv2d(input_channels, num_channels, kernel_size3, padding1, stridestrides)self.conv2 nn.Conv2d(num_channels, num_channels, kernel_size3, padding1)if use_1x1conv:self.conv3 nn.Conv2d(input_channels, num_channels, kernel_size1, stridestrides)else:self.conv3 None# 批量归一化层将会在第7章讲到self.bn1 nn.BatchNorm2d(num_channels)self.bn2 nn.BatchNorm2d(num_channels)def forward(self, X):Y F.relu(self.bn1(self.conv1(X)))Y self.bn2(self.conv2(Y))if self.conv3:X self.conv3(X)Y Xreturn F.relu(Y)# 残差网络是由几个不同的残差块组成的 def resnet_block(input_channels, num_channels, num_residuals, first_blockFalse):blk []for i in range(num_residuals):if i 0 and not first_block:blk.append(Residual(input_channels, num_channels,use_1x1convTrue, strides2))else:blk.append(Residual(num_channels, num_channels))return blkclass ResNet(nn.Module):def __init__(self, num_classes):super().__init__()self.b1 nn.Sequential(nn.Conv2d(3, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2, padding1))self.b2 nn.Sequential(*resnet_block(64, 64, 2, first_blockTrue))self.b3 nn.Sequential(*resnet_block(64, 128, 2))self.b4 nn.Sequential(*resnet_block(128, 256, 2))self.b5 nn.Sequential(*resnet_block(256, 512, 2))self.head nn.Sequential(nn.AdaptiveAvgPool2d((1, 1)), nn.Flatten(), nn.Linear(512, num_classes))def forward(self, x):net nn.Sequential(self.b1, self.b2, self.b3, self.b4, self.b5, self.head)return net(x)import osdef read_csv_labels(fname):读取fname来给标签字典返回一个文件名with open(fname, r) as f:# 跳过文件头行(列名)lines f.readlines()[1:]tokens [l.rstrip().split(,) for l in lines]return dict(((name, label) for name, label in tokens))class CIFAR10Dataset(Dataset):def __init__(self, folder_path, fname):self.labels read_csv_labels(os.path.join(folder_path, fname))self.folder_path os.path.join(folder_path, train)def __len__(self):return len(self.labels)def __getitem__(self, idx):img read_image(self.folder_path / str(idx 1) .png)label self.labels[str(idx 1)]return img, torch.tensor(int(label))class Runner(object):def __init__(self, model, optimizer, loss_fn, metricNone):self.model modelself.optimizer optimizerself.loss_fn loss_fn# 用于计算评价指标self.metric metric# 记录训练过程中的评价指标变化self.dev_scores []# 记录训练过程中的损失变化self.train_epoch_losses []self.dev_losses []# 记录全局最优评价指标self.best_score 0# 模型训练阶段def train(self, train_loader, dev_loaderNone, **kwargs):# 将模型设置为训练模式此时模型的参数会被更新self.model.train()num_epochs kwargs.get(num_epochs, 0)log_steps kwargs.get(log_steps, 100)save_path kwargs.get(save_path, best_model.pth)eval_steps kwargs.get(eval_steps, 0)# 运行的step数不等于epoch数global_step 0if eval_steps:if dev_loader is None:raise RuntimeError(Error: dev_loader can not be None!)if self.metric is None:raise RuntimeError(Error: Metric can not be None)# 遍历训练的轮数for epoch in range(num_epochs):total_loss 0# 遍历数据集for step, data in enumerate(train_loader):x, y datalogits self.model(x.float())loss self.loss_fn(logits, y.long())total_loss lossif step % log_steps 0:print(floss:{loss.item():.5f})loss.backward()self.optimizer.step()self.optimizer.zero_grad()# 每隔一定轮次进行一次验证由eval_steps参数控制可以采用不同的验证判断条件if eval_steps ! 0:if (epoch 1) % eval_steps 0:dev_score, dev_loss self.evaluate(dev_loader, global_stepglobal_step)print(f[Evalute] dev score:{dev_score:.5f}, dev loss:{dev_loss:.5f})if dev_score self.best_score:self.save_model(fmodel_{epoch 1}.pth)print(f[Evaluate]best accuracy performance has been updated: {self.best_score:.5f}--{dev_score:.5f})self.best_score dev_score# 验证过程结束后请记住将模型调回训练模式self.model.train()global_step 1# 保存当前轮次训练损失的累计值train_loss (total_loss / len(train_loader)).item()self.train_epoch_losses.append((global_step, train_loss))self.save_model(f{save_path}.pth)print([Train] Train done)# 模型评价阶段def evaluate(self, dev_loader, **kwargs):assert self.metric is not None# 将模型设置为验证模式此模式下模型的参数不会更新self.model.eval()global_step kwargs.get(global_step, -1)total_loss 0self.metric.reset()for batch_id, data in enumerate(dev_loader):x, y datalogits self.model(x.float())loss self.loss_fn(logits, y.long()).item()total_loss lossself.metric.update(logits, y)dev_loss (total_loss / len(dev_loader))self.dev_losses.append((global_step, dev_loss))dev_score self.metric.accumulate()self.dev_scores.append(dev_score)return dev_score, dev_loss# 模型预测阶段def predict(self, x, **kwargs):self.model.eval()logits self.model(x)return logits# 保存模型的参数def save_model(self, save_path):torch.save(self.model.state_dict(), save_path)# 读取模型的参数def load_model(self, model_path):self.model.load_state_dict(torch.load(model_path, map_locationtorch.device(cpu)))if __name__ __main__:batch_size 20# 构建训练集train_data CIFAR10Dataset(cifar10_tiny, trainLabels.csv)train_iter DataLoader(train_data, batch_sizebatch_size)# 构建测试集test_data CIFAR10Dataset(cifar10_tiny, trainLabels.csv)test_iter DataLoader(test_data, batch_sizebatch_size)# 模型训练num_classes 10# 定义模型model ResNet(num_classes)# 定义损失函数loss_fn F.cross_entropy# 定义优化器optimizer torch.optim.SGD(model.parameters(), lr0.1)runner Runner(model, optimizer, loss_fn, metricNone)runner.train(train_iter, num_epochs15, save_pathchapter_5)# 模型预测runner.load_model(chapter_5.pth)x, label next(iter(test_iter))predict torch.argmax(runner.predict(x.float()), dim1)print(predict:, predict)print( label:, label)
http://www.zqtcl.cn/news/761787/

相关文章:

  • 郑州郑州网站建设河南做网站公司哪家好爱站长尾词挖掘工具
  • dede网站地图文章变量网站qq 微信分享怎么做
  • 越南做网站网站建设以及运营方面
  • 广西建网站哪家好网站关闭与域名备案
  • 网站开发版本号婚庆网站建设策划案费用预算
  • 厦门建设网站制作中山市哪家公司做网站
  • 网站路径wordpress制作电商网站
  • 江西网站开发哪家专业装饰设计公司网站
  • 企业网站策划实训Wordpress 主题简化
  • 做网站点击挣钱不兰州工程建设信息网站
  • 网站说服力 营销...免费看片网站
  • 深圳招聘网站大全制作网站软件下载
  • 网站建设说明哈尔滨网站建设渠道
  • 一 网站建设管理基本情况设计类的网站
  • wordpress产品编辑如何优化wordpress
  • 网站后台更新缓存失败网站平台规划方案
  • 网站开发需求分析主要内容saas建站系统是怎么实现的
  • 做qq头像的网站有哪些wordpress怎么部署到虚拟linux服务器
  • 征求网站建设企业网站建设word
  • 市民服务中心网站建设小型公众号开发
  • 服装网站建设策划书论文基层建设刊物网站
  • 网站建设合同技术开发合同范本wordpress备份和还原
  • 物流信息平台网站建设一流本科专业建设点网站
  • 天猫网站建设的目标是什么装潢设计软件
  • 电商网站首页图片网站功能模块建设
  • 邮件服务器是不是网站服务器黄江网站建设公司
  • 科技部网站方案网页设计网站设计欣赏
  • 自贡建设机械网站网站策划与运营课程认知
  • 公司做网站该注意哪些廊坊seo
  • 网站开发目录高尔夫 wordpress