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

学做凉菜冷菜的网站手机端网站seo

学做凉菜冷菜的网站,手机端网站seo,自己公司做网站,网站开发相关技术发展完成内容#xff1a; 构建CNN并基于MNIST数据集进行训练和测试构建LeNet并基于MNIST数据集进行训练和测试构建AlexNet并基于MNIST数据集进行训练和测试对比了不同网络在MNIST数据集上训练的效果 准备工作 import torch import torch.nn as nn import torch.optim as optim …完成内容 构建CNN并基于MNIST数据集进行训练和测试构建LeNet并基于MNIST数据集进行训练和测试构建AlexNet并基于MNIST数据集进行训练和测试对比了不同网络在MNIST数据集上训练的效果 准备工作 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader from tqdm import tqdm from matplotlib import pyplot as plt import pandas as pd from math import pi下载数据加载data_loader device torch.device(cuda if torch.cuda.is_available() else cpu) print(fdevice:{device}) batch_size 256transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])# 加载数据(本步建议挂梯子) train_dataset datasets.MNIST(root./data, trainTrue, transformtransform, downloadTrue) test_dataset datasets.MNIST(root./data, trainFalse, transformtransform, downloadTrue)# 加载data_loader train_loader DataLoader(datasettrain_dataset, batch_sizebatch_size, shuffleTrue) test_loader DataLoader(datasettest_dataset, batch_sizebatch_size, shuffleFalse)results []定义CNN和LeNet通用的训练函数和测试函数 def train(model, train_loader, criterion, optimizer, device):model.train()running_loss 0.0for inputs, labels in train_loader:inputs, labels inputs.to(device), labels.to(device)optimizer.zero_grad()outputs model(inputs)loss criterion(outputs, labels)loss.backward()optimizer.step()running_loss loss.item()return running_loss / len(train_loader)def test(model, test_loader, criterion, device):model.eval()correct 0total 0with torch.no_grad():for inputs, labels in test_loader:inputs, labels inputs.to(device), labels.to(device)outputs model(inputs)_, predicted torch.max(outputs, 1)total labels.size(0)correct (predicted labels).sum().item()accuracy correct / totalreturn accuracy 构建CNN并基于MNIST数据集进行训练和测试 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.features nn.Sequential(nn.Conv2d(1, 16, kernel_size5, padding2),nn.ReLU(),nn.MaxPool2d(kernel_size2))self.classifier nn.Linear(16 * 14 * 14, 10)def forward(self, x):x self.features(x)x x.view(x.size(0), -1)x self.classifier(x)return x # 展示网络内部结构 X torch.rand(size(1, 1, 28, 28), dtypetorch.float32) for layer in CNN().features:X layer(X)print(layer.__class__.__name__,output shape: \t,X.shape)网络结构 Conv2d output shape: torch.Size([1, 16, 28, 28]) ReLU output shape: torch.Size([1, 16, 28, 28]) MaxPool2d output shape: torch.Size([1, 16, 14, 14])# 初始化CNN优化器损失函数 model CNN().to(device) optimizer optim.Adam(model.parameters(), lr0.001) criterion nn.CrossEntropyLoss() result [] # 训练网络 num_epochs 5 for epoch in tqdm(range(num_epochs), desctraining, unitepoch):train_loss train(model, train_loader, criterion, optimizer, device)test_acc test(model, test_loader, criterion, device)result.append(test_acc)print(fEpoch {epoch1}/{num_epochs}, Loss: {train_loss:.4f}, Test Accuracy: {test_acc:.4f}) results.append(result) results LeNet-MNIST class LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.features nn.Sequential(nn.Conv2d(1, 6, kernel_size5, padding2), nn.ReLU(), # 1 6 28 28nn.AvgPool2d(kernel_size2, stride2), # 1 6 14 14nn.Conv2d(6, 16, kernel_size5), nn.ReLU(), # 1 16 10 10nn.AvgPool2d(kernel_size2, stride2), # (1, 16, 5, 5)nn.Flatten(), # (1, 400)nn.Linear(16 * 5 * 5, 120), nn.ReLU(), # (1, 120)nn.Linear(120, 84), nn.ReLU(), # (1, 84)nn.Linear(84, 10) # (1, 10))def forward(self, x):x self.features(x)return x# 展示LeNet网络内部结构 X torch.rand(size(1, 1, 28, 28), dtypetorch.float32) for layer in LeNet().features:X layer(X)print(layer.__class__.__name__,output shape: \t,X.shape)# 网络结构 Conv2d output shape: torch.Size([1, 6, 28, 28]) ReLU output shape: torch.Size([1, 6, 28, 28]) AvgPool2d output shape: torch.Size([1, 6, 14, 14]) Conv2d output shape: torch.Size([1, 16, 10, 10]) ReLU output shape: torch.Size([1, 16, 10, 10]) AvgPool2d output shape: torch.Size([1, 16, 5, 5]) Flatten output shape: torch.Size([1, 400]) Linear output shape: torch.Size([1, 120]) ReLU output shape: torch.Size([1, 120]) Linear output shape: torch.Size([1, 84]) ReLU output shape: torch.Size([1, 84]) Linear output shape: torch.Size([1, 10])# 初始化CNN优化器损失函数 model LeNet().to(device) optimizer optim.Adam(model.parameters(), lr0.001) criterion nn.CrossEntropyLoss() result [] # 训练模型 num_epochs 5 for epoch in tqdm(range(num_epochs), desctraining, unitepoch):train_loss train(model, train_loader, criterion, optimizer, device)test_acc test(model, test_loader, criterion, device)result.append(test_acc)print(fEpoch {epoch1}/{num_epochs}, Loss: {train_loss:.4f}, Test Accuracy: {test_acc:.4f}) results.append(result) resultsAlexNet-MNIST # 定义AlexNet class AlexNet(nn.Module):def __init__(self, num_classes10):super(AlexNet, self).__init__()self.features nn.Sequential(nn.Conv2d(1, 64, kernel_size11, stride4, padding2),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(64, 192, kernel_size5, padding2),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(192, 384, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(384, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(256, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),)self.avgpool nn.AdaptiveAvgPool2d((6, 6))self.classifier nn.Sequential(nn.Dropout(),nn.Linear(256 * 6 * 6, 4096),nn.ReLU(inplaceTrue),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplaceTrue),nn.Linear(4096, num_classes),)def forward(self, x):x self.features(x)x self.avgpool(x)x torch.flatten(x, 1)x self.classifier(x)return x# 重新加载数据 transform transforms.Compose([transforms.Resize((227, 227)),transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,)) ]) train_dataset datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform) test_dataset datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransform)batch_size 64 train_loader DataLoader(train_dataset, batch_sizebatch_size, shuffleTrue) test_loader DataLoader(test_dataset, batch_sizebatch_size, shuffleFalse)# 初始化AlexNet、优化器、损失函数 device torch.device(cuda if torch.cuda.is_available() else cpu) alexnet AlexNet(num_classes10).to(device) optimizer optim.Adam(alexnet.parameters(), lr0.001) criterion nn.CrossEntropyLoss() result []# 训练 num_epochs 5 for epoch in tqdm(range(num_epochs), desctraining, unitepoch):alexnet.train()for inputs, labels in train_loader:inputs, labels inputs.to(device), labels.to(device)optimizer.zero_grad()outputs alexnet(inputs)loss criterion(outputs, labels)loss.backward()optimizer.step()# 测试alexnet.eval()correct 0total 0with torch.no_grad():for inputs, labels in test_loader:inputs, labels inputs.to(device), labels.to(device)outputs alexnet(inputs)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()accuracy correct / totalresult.append(accuracy)print(fAccuracy on test set: {accuracy * 100:.2f}%) results.append(result)结果分析 # Set data df pd.DataFrame(results) columns [epoch1, epoch2, epoch3, epoch4, epoch5] df.columns columns df[Network] [CNN,LeNet, AlexNet] print(df) # ------- PART 1: Create background# number of variable categorieslist(df)[:-1] N len(categories)# What will be the angle of each axis in the plot? (we divide the plot / number of variable) angles [n / float(N) * 2 * pi for n in range(N)] angles angles[:1]# Initialise the spider plot ax plt.subplot(111, polarTrue)# If you want the first axis to be on top: ax.set_theta_offset(pi / 2) ax.set_theta_direction(-1)# Draw one axe per variable add labels plt.xticks(angles[:-1], categories)# Draw ylabels ax.set_rlabel_position(0) plt.yticks([0.925,0.95,0.975], [0.925,0.95,0.975], colorgrey, size7) plt.ylim(0.9,1)# ------- PART 2: Add plots# Plot each individual each line of the data# Ind1 valuesdf.loc[0].drop(Network).values.flatten().tolist() values values[:1] ax.plot(angles, values, linewidth1, linestylesolid, labelCNN) ax.fill(angles, values, b, alpha0.1)# Ind2 valuesdf.loc[1].drop(Network).values.flatten().tolist() values values[:1] ax.plot(angles, values, linewidth1, linestylesolid, labelLeNet) ax.fill(angles, values, r, alpha0.1)# Ind3 valuesdf.loc[2].drop(Network).values.flatten().tolist() values values[:1] ax.plot(angles, values, linewidth1, linestylesolid, labelAlexNet) ax.fill(angles, values, g, alpha0.1)# Add legend plt.legend(locupper right, bbox_to_anchor(0.1, 0.1))# Show the graph plt.show() epoch1 epoch2 epoch3 epoch4 epoch5 Network 0 0.9629 0.9764 0.9818 0.9823 0.9826 CNN 1 0.9461 0.9706 0.9781 0.9810 0.9869 LeNet 2 0.9844 0.9865 0.9887 0.9855 0.9900 AlexNet总体而言 AlexNet效果更好但Alex网络更复杂计算开销更大 CNN网络最简单计算开销最小效果也较好 LeNet效果不如预期按理来说LeNet网络更复杂相较于CNN拟合效果应更好但实际效果有偏差怀疑是epoch较少5个epoch不足以收敛
http://www.yutouwan.com/news/443224/

相关文章:

  • 做c语言的题目的网站外贸公司一般怎么找客户
  • 海南网站建设公司购物网站的开发
  • 公司网站用wordpresswordpress更改主题目录
  • 中山网站推广词wordpress 导入docx
  • 做58网站空调维修接单怎么样杭州上城区抖音seo渠道
  • 产品网站怎样做外部链接网站正能量下载直接进入主页可以吗安全吗
  • 青岛品牌策划公司排名seo是指什么职位
  • 做电子商务网站网站建设淘宝属于什么类目
  • 中企动力提供网站建设网站一级域名和二级域名区别
  • 坪山网站建设多少钱免费网站空间怎么
  • 怎么申请免费的网站自己设计图片的软件
  • wordpress warring网站页面的优化
  • 万互网站建站新乡中企网站建设
  • 衡水企业网站建设费用建站平台塔山双喜
  • 发卡网站建设手机网站 数据库
  • 网站底部悬浮代码wordpress邮箱qq接入
  • 做网站总结与体会高级网页设计教程
  • 北京建设工程质量协会网站东莞专业的网络推广
  • 宁波网站制作首推蓉胜网络好苏州网站制作排名优化
  • 网站icp备案查询截图呼市地区做网站公司
  • 团结湖网站建设微信小程序开发平台官网
  • 网站管理后台地址网站建设案例 央视网
  • 灵感中心素材网站科技 网站 推荐
  • 加强网站建设的措施网站开发项目安排
  • 福州百度网站快速优化怎么下载建筑工程网
  • 什么网站推广比较好wordpress一页主题
  • 衣服网站建设方案做网站怎么选云主机
  • 邢台建设厅网站重庆做
  • 网页制作网站源码深圳自助企业建站模版
  • 手机网站建设的影响百度关键词搜索怎么弄