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

网页升级访问新域名久久seo正规吗

网页升级访问新域名,久久seo正规吗,怎么做垂直网站,在线网站建设哪家好目录 一、实验目的 二、实验环境 三、实验内容 3.1 训练模型#xff0c;通过调整超参数、使用不同优化器#xff0c;并对比训练结果 3.1.1 LeNet模型 3.1.2 AlexNet模型 3.1.3 VGG模型 3.1.4 ResNet模型 3.2 调整AlexNet模型 3.2.1 简化模型 3.2.2 设计模型以…目录 一、实验目的 二、实验环境 三、实验内容 3.1 训练模型通过调整超参数、使用不同优化器并对比训练结果 3.1.1  LeNet模型 3.1.2  AlexNet模型 3.1.3  VGG模型 3.1.4  ResNet模型 3.2  调整AlexNet模型 3.2.1 简化模型 3.2.2 设计模型以便可以直接在28*28图像上工作 一、实验目的 了解python语法运行LeNet\AlexNet\VGG\ResNet源码调整超参数、选择其它优化器等比较实验结果。简化AlexNet模型以加快训练速度同时确保准确性不会显著下降对比模型精度变化。 二、实验环境 Baidu 飞桨AI Studio 三、实验内容 3.1 训练模型通过调整超参数、使用不同优化器并对比训练结果 3.1.1  LeNet模型 1代码分析 import torch from torch import nn from d2l import torch as d2l import os net  nn.Sequential(nn.Conv2d(1, 6, kernel_size5, padding2), nn.Sigmoid(),nn.AvgPool2d(kernel_size2, stride2),nn.Conv2d(6, 16, kernel_size5), nn.Sigmoid(),nn.AvgPool2d(kernel_size2, stride2),nn.Flatten(),nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),nn.Linear(120, 84), nn.Sigmoid(),nn.Linear(84, 10))X  torch.rand(size(1, 1, 28, 28), dtypetorch.float32) for layer in net:X  layer(X)print(layer.__class__.__name__,output shape: \t,X.shape)import torchvision from torchvision import transforms from torch.utils import data def get_dataloader_workers():return 4 def load_data_fashion_mnist(batch_size, resizeNone):trans  [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize))trans  transforms.Compose(trans)mnist_train  torchvision.datasets.FashionMNIST(root./data, trainTrue, transformtrans, downloadTrue)mnist_test  torchvision.datasets.FashionMNIST(root./data, trainFalse, transformtrans, downloadTrue)return (data.DataLoader(mnist_train, batch_size, shuffleTrue,num_workersget_dataloader_workers()),data.DataLoader(mnist_test, batch_size, shuffleFalse,num_workersget_dataloader_workers()))batch_size  256 train_iter, test_iter  load_data_fashion_mnist(batch_sizebatch_size)def evaluate_accuracy_gpu(net, data_iter, deviceNone): #saveif isinstance(net, nn.Module):net.eval() if not device:device  next(iter(net.parameters())).devicemetric  d2l.Accumulator(2)with torch.no_grad():for X, y in data_iter:if isinstance(X, list):X  [x.to(device) for x in X]else:X  X.to(device)y  y.to(device)metric.add(d2l.accuracy(net(X), y), y.numel())return metric[0] / metric[1]#save def train_ch6(net, train_iter, test_iter, num_epochs, lr, device):def init_weights(m):if type(m)  nn.Linear or type(m)  nn.Conv2d:nn.init.xavier_uniform_(m.weight)net.apply(init_weights)print(training on, device)net.to(device)optimizer  torch.optim.SGD(net.parameters(), lrlr)loss  nn.CrossEntropyLoss()timer, num_batches  d2l.Timer(), len(train_iter)total_loss  d2l.Accumulator(2)  total_acc  d2l.Accumulator(2) for epoch in range(num_epochs):metric  d2l.Accumulator(3)net.train()for i, (X, y) in enumerate(train_iter):timer.start()optimizer.zero_grad()X, y  X.to(device), y.to(device)y_hat  net(X)l  loss(y_hat, y)l.backward()optimizer.step()with torch.no_grad():metric.add(l * X.shape[0], d2l.accuracy(y_hat, y), X.shape[0])total_loss.add(l * X.shape[0], X.shape[0])total_acc.add(d2l.accuracy(y_hat, y), y.numel())timer.stop()train_l  metric[0] / metric[2]train_acc  metric[1] / metric[2]if (i  1) % (num_batches // 5)  0 or i  num_batches - 1:print(fEpoch {epoch  1}, Batch {i  1}/{num_batches},fLoss: {train_l:.3f}, Train Acc: {train_acc:.3f})test_acc  evaluate_accuracy_gpu(net, test_iter)print(fEpoch {epoch  1}, Test Acc: {test_acc:.3f})print(fTotal loss: {total_loss[0]:.3f}, Total accuracy: {total_acc[0] / total_acc[1]:.3f})print(f{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}) lr, num_epochs  0.9, 10 train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu()) 代码部分实现了卷积神经网络CNN对FashionMNIST数据集的分类任务并使用PyTorch进行训练和评估模型。 代码中定义网络结构为两个包含激活函数的卷积层、两个平均池化层、一个展平层和三个带有激活函数的全连接层。遍历网络结构的每个层并打印每层的输出形状。 定义数据集的数据加载器并进行预处理。并设置了评估函数用于在GPU上评估模型的准确性设置训练函数其中使用随机梯度下降SGD和交叉熵损失函数更新参数最后打印训练和测试的损失及准确率。 代码中定义的学习率lr0.9,训练轮数num_epochs10可以通过调整超参数调整模型。 2调整模型、 对比实验结果 原模型的优化器使用了 torch.optim.SGD随机梯度下降 学习率lr0.9   训练轮数num_epochs10    批量大小batch_size256结果如图1所示原模型训练结果图中展示了每个批次的训练损失和准确率以及每个epoch结束后的测试准确率最后计算总损失及准确率。调整模型将优化器修改为 Adam 优化器结果如图2所示。设置学习率lr0.01不改变训练轮数num_epochs10和批量大小batch_size256结果图如图3所示。同样设置学习率lr1.5不改变其它参数结果如图4所示。设置学习率lr3,不改变其它参数结果如图5所示。设置训练轮数num_epochs20不改变学习率lr0.9和批量大小batch_size256结果图如图6所示。同样设置训练轮数num_epochs100,不改变其它参数结果如图7所示。设置训练轮数num_epochs150,不改变其它参数结果如图8所示。设置批量大小batch_size128,不改变学习率lr0.9和训练轮数num_epochs10,结果如图9所示。同样设置批量大小batch_size512不改变其它参数结果如图10所示。 图 1 SGD优化器 学习率lr0.9 训练轮数num_epochs10 批量大小batch_size256 图 2 Adam优化器 学习率lr0.9 训练轮数num_epochs10 批量大小batch_size256 图 3 SGD优化器 学习率lr0.01 训练轮数num_epochs10 批量大小batch_size256 图 4 SGD优化器 学习率lr1.5 训练轮数num_epochs10 批量大小batch_size256 图 5 SGD优化器 学习率lr3 训练轮数num_epochs10 批量大小batch_size256 图 6 SGD优化器 学习率lr0.9 训练轮数num_epochs20 批量大小batch_size256 图 7 SGD优化器 学习率lr0.9 训练轮数num_epochs100 批量大小batch_size256 图 8 SGD优化器 学习率lr0.9 训练轮数num_epochs150 批量大小batch_size256 图 9  SGD优化器 学习率lr0.9 训练轮数num_epochs10 批量大小batch_size128 图 10  SGD优化器 学习率lr0.9 训练轮数num_epochs10 批量大小batch_size512 3绘制表格并分析实验结果如表1所示 对比实验结果可知对于Fashion-MNIST数据集使用SGD优化器的模型整体准确率高于使用Adam优化器的模型其次实验中学习率在一定范围内适当地提高有利于降低平均损失率提高模型的准确率效率也有所提高对于训练轮数较小的训练轮数节省了时间和计算资源较大的训练轮数使模型更好地拟合训练数据但是计算成本高需要更多的计算时间对于批量大小较小的批量大小导致模型训练时间更长增加了损失波动同时模型的准确率也有所提高。较大的批量大小由于减少了批次的数量计算量减少训练时间更短。 表1 LeNet模型对比 优化器 学习率lr 训练轮数num_epochs 批量大小batch_size 平均损失率total loss 整体准确率total accuracy 运行时间 SGD 0.9 10 256 0.830 0.677 47秒919毫秒 Adam 0.9 10 256 9.646 0.100 44秒949毫秒 SGD 0.01 10 256 2.304 0.098 44秒193毫秒 SGD 1.5 10 256 0.889 0.656 44秒131毫秒 SGD 3 10 256 1.387 0.461 44秒550毫秒 SGD 0.9 20 256 0.625 0.761 1分钟27秒561毫秒 SGD 0.9 100 256 0.325 0.877 7分钟19秒805毫秒 SGD 0.9 150 256 0.258 0.904 11分钟1秒254毫秒 SGD 0.9 10 128 0.716 0.724 55秒145毫秒 SGD 0.9 10 512 1.192 0.535 39秒852毫秒 3.1.2  AlexNet模型 1代码分析 import torch from torch import nn from d2l import torch as d2lnet  nn.Sequential(nn.Conv2d(1, 96, kernel_size11, stride4, padding1), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(96, 256, kernel_size5, padding2), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(256, 384, kernel_size3, padding1), nn.ReLU(),nn.Conv2d(384, 384, kernel_size3, padding1), nn.ReLU(),nn.Conv2d(384, 256, kernel_size3, padding1), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Flatten(),nn.Linear(6400, 4096), nn.ReLU(),nn.Dropout(p0.5),nn.Linear(4096, 4096), nn.ReLU(),nn.Dropout(p0.5),nn.Linear(4096, 10))X  torch.randn(1, 1, 224, 224) for layer in net:Xlayer(X)print(layer.__class__.__name__,output shape:\t,X.shape)import torchvision from torchvision import transforms from torch.utils import data def get_dataloader_workers():return 4 def load_data_fashion_mnist(batch_size, resizeNone):trans  [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize))trans  transforms.Compose(trans)mnist_train  torchvision.datasets.FashionMNIST(root./data, trainTrue, transformtrans, downloadTrue)mnist_test  torchvision.datasets.FashionMNIST(root./data, trainFalse, transformtrans, downloadTrue)return (data.DataLoader(mnist_train, batch_size, shuffleTrue,num_workersget_dataloader_workers()),data.DataLoader(mnist_test, batch_size, shuffleFalse,num_workersget_dataloader_workers())) batch_size  128 train_iter, test_iter  load_data_fashion_mnist(batch_size, resize224) lr, num_epochs  0.01, 10 d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu()) 代码中定义了基于AlexNet的神经网络。第一层是卷积层使用96个11x11的滤波器步幅为4填充为1。第二层是最大池化层使用3x3的窗口步幅为2。第三层是卷积层使用256个5x5的滤波器填充为2。第四层是最大池化层使用3x3的窗口步幅为2。第五到第七层是两个卷积层每个使用384个3x3的滤波器填充为1。第八层是另一个卷积层使用256个3x3的滤波器填充为1。第九层是最大池化层使用3x3的窗口步幅为2。第十层是展平层将多维张量展平成一维向量。第十一到第十三层是三个全连接层分别有4096个神经元并使用ReLU激活函数和Dropout正则化。最后一层是输出层有10个神经元对应于10个类别。对于数据加载及预处理后训练模型代码中设置学习率lr为0.01设置训练轮数num_epochs为10可以通过调整超参数调整模型。 2调整模型、 对比实验结果 a.原模型的优化器使用了 torch.optim.SGD随机梯度下降 学习率lr0.01   训练轮数num_epochs10    批量大小batch_size128  工作线程数4 结果如图11所示原模型训练结果图中展示了每个批次的训练损失和准确率以及每个epoch结束后的测试准确率最后计算总损失及准确率。 b.调整模型将优化器修改为 Adam 优化器结果如图12所示。 c.设置学习率lr0.001不改变训练轮数num_epochs10和批量大小batch_size128结果图如图13所示。同样设置学习率lr0.5不改变其它参数结果如图14所示。 d.设置训练轮数num_epochs5不改变学习率lr0.01和批量大小batch_size128结果图如图15所示。同样设置训练轮数num_epochs20,不改变其它参数结果如图16所示。 e.设置批量大小batch_size64不改变学习率lr0.01和训练轮数num_epochs10结果图如图17所示。同样设置batch_size256,不改变其它参数结果如图18所示。 f.设置工作线程数8不改变其他参数结果如图19所示。 图 11  SGD优化器 学习率lr0.01 训练轮数num_epochs10 批量大小batch_size128 图 12  Adam优化器 学习率lr0.01 训练轮数num_epochs10 批量大小batch_size128 图 13  SGD优化器 学习率lr0.001 训练轮数num_epochs10 批量大小batch_size128 图 14  SGD优化器 学习率lr0.5 训练轮数num_epochs10 批量大小batch_size128 图 15  SGD优化器 学习率lr0.01 训练轮数num_epochs5 批量大小batch_size128 图 16  SGD优化器 学习率lr0.01 训练轮数num_epochs20 批量大小batch_size128 图 17  SGD优化器 学习率lr0.01 训练轮数num_epochs10 批量大小batch_size64 图 18  SGD优化器 学习率lr0.01 训练轮数num_epochs10 批量大小batch_size256 图 19 工作线程数8 3绘制表格并分析实验结果如表2所示 对比实验结果可知在使用AlexNet的模型中使用SGD优化器的准确率高于使用Adam模型的准确率但是准确率高的同时SGD优化器的运行时间更长对比学习率从0.001到0.01再到0.5适当增加学习率模型的准确率会提高平均损失有所降低如果学习率过大会造成模型精度下降可能会导致模型过拟合对比训练轮数从5到10再到20增加训练轮数有利于模型提高准确率但是同时计算时间增加计算成本提高对比批量大小从64到128再到256从实验结果可以看出当批量大小设置为128时训练出的模型精度最高当修改模型工作线程数从4到8可以看到工作线程数的改变对模型损失率、准确率等并无较大影响。 表2 AlexNet模型对比 优化器 学习率lr 训练轮数num_epochs 批量大小batch_size 工作线程数 平均损失率total loss 整体准确率total accuracy 运行时间 SGD 0.01 10 128 4 0.530 0.804 29分钟32秒776毫秒 Adam 0.01 10 128 4 521.454 0.119 8分钟38秒433毫秒 SGD 0.001 10 128 4 1.280 0.536 7分钟37秒889毫秒 SGD 0.5 10 128 4 2.304 0.100 7分钟17秒594毫秒 SGD 0.01 5 128 4 2.303 0.100 3分钟35秒947毫秒 SGD 0.01 20 128 4 2.303 0.098 14分钟38秒794毫秒 SGD 0.01 10 64 4 2.303 0.098 14分钟23秒761毫秒 SGD 0.01 10 256 4 2.303 0.099 7分钟11秒752毫秒 SGD 0.01 10 128 8 0.528 0.805 7分钟46秒636毫秒 3.1.3  VGG模型 1代码分析 import torch from torch import nn from d2l import torch as d2ldef vgg_block(num_convs, in_channels, out_channels):layers  []for _ in range(num_convs):layers.append(nn.Conv2d(in_channels, out_channels,kernel_size3, padding1))layers.append(nn.ReLU())in_channels  out_channelslayers.append(nn.MaxPool2d(kernel_size2,stride2))return nn.Sequential(*layers)conv_arch  ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))def vgg(conv_arch):conv_blks  []in_channels  1for (num_convs, out_channels) in conv_arch:conv_blks.append(vgg_block(num_convs, in_channels, out_channels))in_channels  out_channelsreturn nn.Sequential(*conv_blks, nn.Flatten(),nn.Linear(out_channels * 7 * 7, 4096), nn.ReLU(), nn.Dropout(0.5),nn.Linear(4096, 4096), nn.ReLU(), nn.Dropout(0.5),nn.Linear(4096, 10))net  vgg(conv_arch)X  torch.randn(size(1, 1, 224, 224)) for blk in net:X  blk(X)print(blk.__class__.__name__,output shape:\t,X.shape)ratio  4 small_conv_arch  [(pair[0], pair[1] // ratio) for pair in conv_arch] net  vgg(small_conv_arch) 代码中通过一个VGG网络处理FashionMNIST数据集vgg_block函数定义了一个基本的VGG块包含多个卷积层和ReLU激活函数最后连接最大池化层。vgg函数根据conv_arch构建整个VGG网络包括卷积块、展平层和全连接层。打印每一层输出的形状以验证网络结构是否正确。通过将每个卷积层的输出通道数除以ratio来缩小模型的规模并重新构建VGG网络。 加载训练数据集后进行模型训练代码如上述两个模型所示其中设置学习率、训练轮数和批量大小可通过修改超参数调整网络模型。 2调整模型、 对比实验结果 a.原模型的优化器使用了 torch.optim.SGD随机梯度下降 学习率lr0.05   训练轮数num_epochs10    批量大小batch_size128  工作线程数4 结果如图20所示原模型训练结果图中展示了每个批次的训练损失和准确率以及每个epoch结束后的测试准确率最后计算总损失及准确率。 b.调整模型将优化器修改为 Adam 优化器结果如图21所示。 c.设置学习率lr0.5不改变训练轮数num_epochs10和批量大小batch_size128结果图如图22所示。同样设置学习率lr0.001不改变其它参数结果如图23所示。 d.设置训练轮数num_epochs5不改变学习率lr0.05和批量大小batch_size128结果图如图24所示。同样设置训练轮数num_epochs20,不改变其它参数结果如图25所示。 e.设置批量大小batch_size64不改变学习率lr0.05和训练轮数num_epochs10结果图如图26所示。同样设置batch_size256,不改变其它参数结果如图27所示。 f.设置工作线程数8不改变其他参数结果如图28所示。 图20   SGD优化器 学习率lr0.05 训练轮数num_epochs10 批量大小batch_size128 图21  Adam优化器  学习率lr0.05 训练轮数num_epochs10 批量大小batch_size128 图 22  SGD优化器 学习率lr0.5 训练轮数num_epochs10 批量大小batch_size128 图 23  SGD优化器 学习率lr0.001 训练轮数num_epochs10 批量大小batch_size128 图 24  SGD优化器 学习率lr0.05 训练轮数num_epochs5 批量大小batch_size128 图 25  SGD优化器 学习率lr0.05 训练轮数num_epochs20 批量大小batch_size128 图 26  SGD优化器 学习率lr0.05 训练轮数num_epochs20 批量大小batch_size64 图 27 SGD优化器 学习率lr0.05 训练轮数num_epochs20 批量大小batch_size256 图 28 工作线程数8 3绘制表格并分析实验结果如表3所示 对比实验结果可知在VGG模型中使用SGD优化器的准确率高于使用Adam模型的准确率但是准确率高的同时SGD优化器的运行时间更长对比学习率从0.001到0.05再到0.5当学习率设置为0.05时模型的精度最高损失函数最小对比训练轮数从5到10再到20随着训练轮数的增加平均损失率逐渐降低准确率逐渐增加对比批量大小从64到128再到256从实验结果可以看到当批量大小设置为64时准确率最高平均损失最低设置为128和256的准确率相近但是批量大小为128的模型平均损失略低于批量大小为256的模型修改工作线程数可以看到结果相近并无较大变化。 表 3 VGG模型对比 优化器 学习率lr 训练轮数num_epochs 批量大小batch_size 工作线程数 平均损失率total loss 整体准确率total accuracy 运行时间 SGD 0.05 10 128 4 0.352 0.870 15分钟17秒868毫秒 Adam 0.5 10 128 4 1643696.607 0.099 15分钟49秒290毫秒 SGD 0.5 10 128 4 2.304 0.100 14分钟50秒651毫秒 SGD 0.001 10 128 4 2.303 0.100 15分钟6秒617毫秒 SGD 0.05 5 128 4 1.038 0.605 7分钟40秒10毫秒 SGD 0.05 20 128 4 0.253 0.929 31分钟26秒497毫秒 SGD 0.05 10 64 4 0.257 0.906 16分钟25秒780毫秒 SGD 0.05 10 256 4 0.401 0.852 13分钟45秒150毫秒 SGD 0.05 10 128 8 0.365 0.866 15分钟27秒249毫秒 3.1.4  ResNet模型 1代码分析 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lclass Residual(nn.Module):  #savedef __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  Noneself.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)blk  Residual(3,3) X  torch.rand(4, 3, 6, 6) Y  blk(X) Y.Shapeblk  Residual(3,6, use_1x1convTrue, strides2) blk(X).shape b1  nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2, padding1))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 blkb2  nn.Sequential(*resnet_block(64, 64, 2, first_blockTrue)) b3  nn.Sequential(*resnet_block(64, 128, 2)) b4  nn.Sequential(*resnet_block(128, 256, 2)) b5  nn.Sequential(*resnet_block(256, 512, 2)) net  nn.Sequential(b1, b2, b3, b4, b5,nn.AdaptiveAvgPool2d((1,1)),nn.Flatten(), nn.Linear(512, 10))X  torch.rand(size(1, 1, 224, 224)) for layer in net:X  layer(X)print(layer.__class__.__name__,output shape:\t, X.shape) 代码中通过基于ResNet架构的卷积神经网络处理FashionMNIST数据集。Residual类定义了一个残差块它包含两个卷积层和一个可选的1x1卷积层用于改变输入和输出的维度。forward方法中首先通过第一个卷积层和批量归一化层再通过ReLU激活函数。接着第二个卷积层和批量归一化层最后将输入与输出相加并通过ReLU激活函数。ResNet网络中包含卷积层、批量归一化层、ReLU激活函数、最大池化层以及不同深度的残差块序列还包括展平层和全连接层。 加载训练数据集后进行模型训练具体代码见百度飞桨平台。其中设置学习率、训练轮数和批量大小可通过修改超参数调整网络模型。 2调整模型、 对比实验结果 a.原模型的优化器使用了 torch.optim.SGD随机梯度下降 学习率lr0.05   训练轮数num_epochs10    批量大小batch_size256  工作线程数4 结果如图29所示原模型训练结果图中展示了每个批次的训练损失和准确率以及每个epoch结束后的测试准确率最后计算总损失及准确率。 b.调整模型将优化器修改为 Adam 优化器结果如图30所示。 c.设置学习率lr0.001不改变训练轮数num_epochs10和批量大小batch_size256结果图如图31所示。同样设置学习率lr0.5不改变其它参数结果如图32所示。 d.设置训练轮数num_epochs5不改变学习率lr0.05和批量大小batch_size256结果图如图33所示。同样设置训练轮数num_epochs20,不改变其它参数结果如图34所示。 e.设置批量大小batch_size128不改变学习率lr0.05和训练轮数num_epochs10结果图如图35所示。同样设置batch_size512,不改变其它参数结果如图36所示。 图 29  SGD优化器 学习率lr0.05 训练轮数num_epochs10 批量大小batch_size256 图 30 Adam优化器 学习率lr0.05 训练轮数num_epochs10 批量大小batch_size256 图 31  SGD优化器 学习率lr0.001 训练轮数num_epochs10 批量大小batch_size256 图 32  SGD优化器 学习率lr0.5 训练轮数num_epochs10 批量大小batch_size256 图 33  SGD优化器 学习率lr0.5 训练轮数num_epochs5 批量大小batch_size256 图 34 SGD优化器 学习率lr0.5 训练轮数num_epochs20 批量大小batch_size256 图 35  SGD优化器 学习率lr0.5 训练轮数num_epochs20 批量大小batch_size128 图 36  SGD优化器 学习率lr0.5 训练轮数num_epochs20 批量大小batch_size512 3绘制表格并分析实验结果如表4所示 对比实验结果可知对于ResNet模型使用SGD优化器的模型精度高于使用Adam优化器的模型对于学习率从0.001到0.05再到0.5学习率为0.05时的模型精度最高平均损失最小对于训练轮数从5到10再到20训练轮数越大模型精度越高但是可以看到模型的计算成本明显提高对于批量大小从128到256再到512从实验结果可以看到三个批量大小的改变对ResNet的影响较小。 表 4 ResNet模型对比 优化器 学习率lr 训练轮数num_epochs 批量大小batch_size 平均损失率total loss 整体准确率total accuracy 运行时间 SGD 0.05 10 256 0.142 0.950 7分钟28秒898毫秒 Adam 0.05 10 256 0.503 0.872 7分钟31秒677毫秒 SGD 0.001 10 256 0.466 0.847 7分钟28秒397毫秒 SGD 0.5 10 256 0.330 0.887 7分钟27秒795毫秒 SGD 0.05 5 256 0.230 0.917 3分钟47秒152毫秒 SGD 0.05 20 256 0.069 0.976 15分钟8秒623毫秒 SGD 0.05 10 128 0.127 0.954 7分钟54秒979毫秒 SGD 0.05 10 512 0.161 0.944 7分钟31秒159毫秒 3.2  调整AlexNet模型 3.2.1 简化模型 原AlexNet模型具有五层卷积层一个最大池化层大小为3*3步幅为2三个全连接层16400个输入节点4096个输出节点24096个输入节点4096个输出节点34096个输入节点10个输出节点两个Dropout层丢弃率为0.5。 修改模型网络结构如以下代码所示修改为四个卷积层修改的模型中第一层卷积层的卷积核是7*7一个最大池化层大小为3*3步幅为2两个全连接层1256*13*13个输入节点1024个输出节点21024个输入节点10个输出节点一个Dropout层丢弃率为0.5。 import torch from torch import nn from d2l import torch as d2lnet  nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(64, 128, kernel_size5, padding2), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(128, 256, kernel_size3, padding1), nn.ReLU(),nn.Conv2d(256, 256, kernel_size3, padding1), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Flatten(),nn.Linear(256 * 13 * 13, 1024), nn.ReLU(),nn.Dropout(p0.5),nn.Linear(1024, 10)) 原模型打印处每一层的形状 修改后的模型打印出的每一层的形状 结果如图所示根据3.1中的实验结果原模型运行时长为29分钟修改后的模型运行时长为17分钟模型的效率有所提高。 3.2.2 设计模型以便可以直接在28*28图像上工作 如以下代码所示设计网络结构包含两个卷积层、两个ReLU激活函数两个最大池化层、一个展平层、一个全连接层、一个Dropout层和一个输出层。 class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1  nn.Conv2d(1, 32, kernel_size3, padding1)self.relu1  nn.ReLU()self.pool1  nn.MaxPool2d(kernel_size2, stride2)self.conv2  nn.Conv2d(32, 64, kernel_size3, padding1)self.relu2  nn.ReLU()self.pool2  nn.MaxPool2d(kernel_size2, stride2)self.flatten  nn.Flatten()self.fc1  nn.Linear(64 * 7 * 7, 1024)self.relu3  nn.ReLU()self.dropout  nn.Dropout(p0.5)self.fc2  nn.Linear(1024, 10)def forward(self, x):x  self.conv1(x)x  self.relu1(x)x  self.pool1(x)x  self.conv2(x)x  self.relu2(x)x  self.pool2(x)x  self.flatten(x)x  self.fc1(x)x  self.relu3(x)x  self.dropout(x)x  self.fc2(x)return x net  Net() 结果如下图所示
http://www.hkea.cn/news/14275727/

相关文章:

  • 无为网站定制林州网站建设哪家便宜
  • 重庆江北网站建设公司西安网络建设公司
  • 学院门户网站建设必要性手机app与电脑网站的区别
  • 深圳专业网站制作技术百度统计会对原网站产生影响吗
  • 永康新站优化软件免费下载的网站大全
  • 家装企业网站系统下载南昌做网站的公司多不多
  • 北京响应式的网站58网站怎么做优化
  • 绥化市建设工程网站招投标北京游戏公司排名
  • 网站引流怎么做浙江专业网站seo
  • 域名和主机搭建好了怎么做网站安装wordpress提示500错误
  • 网站后台 全局配置宜昌网站设计制作公司
  • 外包 网站开发公司什么网站可以做ppt
  • 住房和城乡建设部网站科技项目六盘水网站开发
  • c 网站开发中间层怎么写网站开发过程有几个阶段
  • 烟台网站建设企业常用分类信息网站
  • 政企网站建设企业seo自助建站系统
  • 网站建设实验的总结做网站域名重要吗
  • 网站开发中的渲染是什么意思京美建站有代码吗
  • 网站服务器地址怎么查询企业营销型网站建设规划
  • 网站建设销售开场白怎么使用vs2017做网站
  • phpcms获取网站名称wordpress中文手册pdf
  • 南京外贸网站建设案例秦皇岛网站团队
  • 国外设计欣赏网站中国室内设计网站官网
  • 那个网站做二手设备比较好WordPress主题自定义里内容
  • 电商网站的制作众享城市生活app缴费
  • 网站制作资料收集做视频网站需要什么服务器配置
  • 重庆模板自助建站php网站做退出的代码
  • 绿色企业网站模板wordpress fsockopen
  • 国外网站模版设计中国飞机的第一架飞机的人是谁
  • 用什么开发和建设网站最好wordpress编辑分段