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

导航类网站源码wordpress 分享 微信二维码

导航类网站源码,wordpress 分享 微信二维码,网站建设的项目描述,亚马逊的免费网站#x1f368; 本文为#x1f517;365天深度学习训练营 中的学习记录博客#x1f356; 原作者#xff1a;K同学啊 目标 实现CIFAR-10的彩色图片识别实现比P1周更复杂一点的CNN网络 具体实现 #xff08;一#xff09;环境 语言环境#xff1a;Python 3.10 编 译 器: … 本文为365天深度学习训练营 中的学习记录博客 原作者K同学啊 目标 实现CIFAR-10的彩色图片识别实现比P1周更复杂一点的CNN网络 具体实现 一环境 语言环境Python 3.10 编 译 器: PyCharm 框 架: Pytorch 2.5.1 二具体步骤 1. import torch import torch.nn as nn import matplotlib.pyplot as plt import torchvision # 第一步设置GPU def USE_GPU(): if torch.cuda.is_available(): print(CUDA is available, will use GPU) device torch.device(cuda) else: print(CUDA is not available. Will use CPU) device torch.device(cpu) return device device USE_GPU() 输出CUDA is available, will use GPU # 第二步导入数据。同样的CIFAR-10也是torch内置了可以自动下载 train_dataset torchvision.datasets.CIFAR10(root./data, trainTrue, downloadTrue, transformtorchvision.transforms.ToTensor()) test_dataset torchvision.datasets.CIFAR10(root./data, trainFalse, downloadTrue, transformtorchvision.transforms.ToTensor()) batch_size 32 train_dataload torch.utils.data.DataLoader(train_dataset, batch_sizebatch_size, shuffleTrue) test_dataload torch.utils.data.DataLoader(test_dataset, batch_sizebatch_size) # 取一个批次查看数据格式 # 数据的shape为[batch_size, channel, height, weight] # 其中batch_size为自己设定channelheight和weight分别是图片的通道数高度和宽度。 imgs, labels next(iter(train_dataload)) print(imgs.shape) # 查看一下图片 import numpy as np plt.figure(figsize(20, 5)) for i, images in enumerate(imgs[:20]): # 使用numpy的transpose将张量C,H, W)转换成H, W, C)便于可视化处理 npimg imgs.numpy().transpose((1, 2, 0)) # 将整个figure分成2行10列并绘制第i1个子图 plt.subplot(2, 10, i1) plt.imshow(npimg, cmapplt.cm.binary) plt.axis(off) plt.show() 输出 Files already downloaded and verified Files already downloaded and verified torch.Size([32, 3, 32, 32]) # 第三步构建CNN网络 import torch.nn.functional as F num_classes 10 # 因为CIFAR-10是10种类型 class Model(nn.Module): def __init__(self): super(Model, self).__init__() # 提取特征网络 self.conv1 nn.Conv2d(3, 64, 3) self.pool1 nn.MaxPool2d(kernel_size2) self.conv2 nn.Conv2d(64, 64, 3) self.pool2 nn.MaxPool2d(kernel_size2) self.conv3 nn.Conv2d(64, 128, 3) self.pool3 nn.MaxPool2d(kernel_size2) # 分类网络 self.fc1 nn.Linear(512, 256) self.fc2 nn.Linear(256, num_classes) # 前向传播 def forward(self, x): x self.pool1(F.relu(self.conv1(x))) x self.pool2(F.relu(self.conv2(x))) x self.pool3(F.relu(self.conv3(x))) x torch.flatten(x, 1) x F.relu(self.fc1(x)) x self.fc2(x) return x from torchinfo import summary # 将模型转移到GPU中 model Model().to(device) summary(model) # 训练模型 loss_fn nn.CrossEntropyLoss() # 创建损失函数 learn_rate 1e-2 # 设置学习率 opt torch.optim.SGD(model.parameters(), lrlearn_rate) # 设置优化器 # 编写训练函数 def train(dataloader, model, loss_fn, optimizer): size len(dataloader.dataset) # 训练集的大小 这里一共是60000张图片 num_batches len(dataloader) # 批次大小这里是187560000/321875) train_acc, train_loss 0, 0 # 初始化训练正确率和损失率都为0 for X, y in dataloader: # 获取图片及标签X-图片y-标签也是实际值 X, y X.to(device), y.to(device) # 计算预测误差 pred model(X) # 网络输出预测值 loss loss_fn(pred, y) # 计算网络输出的预测值和实际值之间的差距 # 反向传播 optimizer.zero_grad() # grad属性归零 loss.backward() # 反向传播 optimizer.step() # 第一步自动更新 # 记录正确率和损失率 train_acc (pred.argmax(1) y).type(torch.float).sum().item() train_loss loss.item() train_acc / size train_loss / num_batches return train_acc, train_loss # 测试函数 def test(dataloader, model, loss_fn): size len(dataloader.dataset) # 测试集大小这里一共是10000张图片 num_batches len(dataloader) # 批次大小 这里312即10000/32312.5,向上取整 test_acc, test_loss 0, 0 # 因为是测试因此不用训练梯度也不用计算不用更新 with torch.no_grad(): for imgs, target in dataloader: imgs, target imgs.to(device), target.to(device) # 计算loss target_pred model(imgs) loss loss_fn(target_pred, target) test_loss loss.item() test_acc (target_pred.argmax(1) target).type(torch.float).sum().item() test_acc / size test_loss / num_batches return test_acc, test_loss # 正式训练 epochs 10 train_acc, train_loss, test_acc, test_loss [], [], [], [] for epoch in range(epochs): model.train() epoch_train_acc, epoch_train_loss train(train_dataload, model, loss_fn, opt) model.eval() epoch_test_acc, epoch_test_loss test(test_dataload, model, loss_fn) train_acc.append(epoch_train_acc) train_loss.append(epoch_train_loss) test_acc.append(epoch_test_acc) test_loss.append(epoch_test_loss) template Epoch:{:2d}, 训练正确率:{:.1f}%, 训练损失率:{:.3f}, 测试正确率{:.1f}%, 测试损失率{:.3f} print(template.format(epoch1, epoch_train_acc * 100, epoch_train_loss, epoch_test_acc*100, epoch_test_loss)) print(Done) # 结果可视化 # 隐藏警告 import warnings warnings.filterwarnings(ignore) # 忽略警告信息 plt.rcParams[font.sans-serif] [SimHei] # 正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 正常显示/-号 plt.rcParams[figure.dpi] 100 # 分辨率 epochs_range range(epochs) plt.figure(figsize(12, 3)) plt.subplot(1, 2, 1) # 第一张子图 plt.plot(epochs_range, train_acc, label训练正确率) plt.plot(epochs_range, test_acc, label测试正确率) plt.legend(loclower right) plt.title(训练和测试正确率比较) plt.subplot(1, 2, 2) # 第二张子图 plt.plot(epochs_range, train_loss, label训练损失率) plt.plot(epochs_range, test_loss, label测试损失率) plt.legend(locupper right) plt.title(训练和测试损失率比较) plt.show()# 保存模型 torch.save(model, ./models/cnn-cifar10.pth)再次设置epochs为50训练结果 epochs增加到100训练结果 可以看到训练集和测试集的差距有点大不太理想。做一下数据增加试试 data_transforms { train: transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.ToTensor(), ]), test: transforms.Compose([ transforms.ToTensor(), ]) }在dataset中 train_dataset torchvision.datasets.CIFAR10(root./data, trainTrue, downloadTrue, transformdata_transforms[train]) test_dataset torchvision.datasets.CIFAR10(root./data, trainFalse, downloadTrue, transformdata_transforms[test])运行结果 比较漂亮了再调整batch_size16和epochs20,提高了近6个百分点。 batch_size16,epochs50:有第20轮左右的时候验证集的确认性基本就没有再提高了。和上面基本一样。 三总结 epochs并不是越多越好。batch_size同样的道理数据增强确实可以提高模型训练的准确性。
http://www.hkea.cn/news/14454665/

相关文章:

  • wordpress小程序制作郴州网站seo外包
  • 怎么免费建设个人网站山东圣大建设集团网站
  • h5可以来做网站吗南阳微网站建设
  • 开发网站公司名称湘西州住房和城乡建设局网站
  • 定制网站建设程序流程做网页向网站提交数据
  • 护肤品网站建设需求分析做外贸生意最好的网站
  • 专业做网站建设wordpress投票插件
  • 如何自己做公司网站网站怎么上线
  • 网站兼职做计划赚小钱遵义做手机网站建设
  • 软件开发和网站开发有何不同u网站建设
  • 中国空间站完成了多少jquery加速wordpress
  • 顺德网站建设jinqiyewordpress和node.js
  • 如何建手机网站做同城特价的网站有哪些
  • 长尾关键词挖掘站长工具the7做的网站
  • 如何设计网站的主菜单哪个网站做律师推广
  • 怎么做一个手机网站学生个人网页内容排版设计作品
  • 做网站有必要要源码吗做游戏网站在哪里找
  • asp网站 打开最贵网站建设
  • 临汾推广型网站建设wordpress创建论坛
  • 石家庄哪里有做网站网络品牌推广就选
  • 响应式外贸营销网站宁波建设集团股份有限公司官网
  • 兰州网站建设方案如何登陆网站空间
  • 中小企业网站优化做网站的编程语言组合
  • 哪个网站有摄影作品oppo软件商店网页版
  • 专业自适应网站建设极速建站设计本电脑
  • 网站ftp的所有权归谁深圳推广系统哪家好
  • 企业网站制作模板wordpress 画图插件
  • 自学建站网人力资源外包
  • 婚纱摄影网站模版整站源码工信部网站怎么查网址
  • 做网站用什么系统较好网站开发 毕业答辩ppt