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

phpcms做视频网站点瑞网络网站建设

phpcms做视频网站,点瑞网络网站建设,建设银行网站 开户行怎么查询,西安网络优化哪家好#x1f468;‍#x1f393;作者简介#xff1a;一位即将上大四#xff0c;正专攻机器学习的保研er #x1f30c;上期文章#xff1a;机器学习深度学习——池化层 #x1f4da;订阅专栏#xff1a;机器学习深度学习 希望文章对你们有所帮助 卷积神… ‍作者简介一位即将上大四正专攻机器学习的保研er 上期文章机器学习深度学习——池化层 订阅专栏机器学习深度学习 希望文章对你们有所帮助 卷积神经网络LeNet 引言LeNet模型训练小结 引言 之前的内容中曾经将softmax回归模型和多层感知机应用于Fashion-MNIST数据集中的服装图片。为了能应用他们我们首先就把图像展平成了一维向量然后用全连接层对其进行处理。 而现在已经学习过了卷积层的处理方法我们就可以在图像中保留空间结构。同时用卷积层代替全连接层的另一个好处是模型更简单所需参数更少。 LeNet是最早发布的卷积神经网络之一之前出来的目的是为了识别图像中的手写数字。 LeNet 总体看由两个部分组成 1、卷积编码器由两个卷积层组成 2、全连接层密集快由三个全连接层组成 上图中就是LeNet的数据流图示其中汇聚层也就是池化层。 最终输出的大小是10也就是10个可能结果0-9。 每个卷积块的基本单元是一个卷积层、一个sigmoid激活函数和平均池化层当年没有ReLU和最大池化层。每个卷积层使用5×5卷积核和一个sigmoid激活函数。 这些层的作用就是将输入映射到多个二维特征输出通常同时增加通道的数量。从上图容易看出第一卷积层有6个输出通道而第二个卷积层有16个输出通道每个2×2池操作步幅也为2通过空间下采样将维数减少4倍。卷积的输出形状那是由批量大小、通道数、高度、宽度决定。 为了将卷积块的输出传递给稠密块我们必须在小批量中展平每个样本也就是把四维的输入转换为全连接层期望的二维输入第一维索引小批量中的样本第二维给出给个样本的平面向量表示。 LeNet的稠密块有三个全连接层分别有120、84和10个输出。因为我们在执行分类任务所以输出层的10维对应于最后输出结果的数量代表0-9是个结果。 深度学习框架实现此类模型非常简单用一个Sequential块把需要的层连接在一个就可以了我们对原始模型做一个小改动去掉最后一层的高斯激活 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 输入图像和输出图像都是28×28因此我们要先进行填充2格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) 输出结果 Conv2d output shape: torch.Size([1, 6, 28, 28]) Sigmoid 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]) Sigmoid 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]) Sigmoid output shape: torch.Size([1, 120]) Linear output shape: torch.Size([1, 84]) Sigmoid output shape: torch.Size([1, 84]) Linear output shape: torch.Size([1, 10]) 模型训练 既然已经实现了LeNet现在可以查看它在Fashion-MNIST数据集上的表现 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)计算成本较高因此使用GPU来加快训练。为了进行评估对之前的evaluate_accuracy进行修改由于完整的数据集位于内存中因此在模型使用GPU计算数据集之前我们需要将其复制到显存中。 def evaluate_accuracy_gpu(net, data_iter, deviceNone):使用GPU计算模型在数据集上的精度if isinstance(net, nn.Module):net.eval() # 设置为评估模式if not device:device next(iter(net.parameters())).device# 正确预测的数量总预测的数量metric d2l.Accumulator(2)with torch.no_grad():for X, y in data_iter:if isinstance(X, list):# BERT微调所需后面内容else:X X.to(device)y y.to(device)metric.add(d2l.accuracy(net(X), y), y.numel())return metric[0] / metric[1]要使用GPU我们要在正向和反向传播之前将每一小批量数据移动到我们GPU上。 如下所示的train_ch6类似于之前定义的train_ch3。以下训练函数假定从高级API创建的模型作为输入并进行相应的优化。 使用Xavier来随机初始化模型参数。有关于Xavier的推导和原理可以看下面的文章 机器学习深度学习——数值稳定性和模型化参数详细数学推导 与全连接层一样使用交叉熵损失函数和小批量随机梯度下降代码如下 def train_ch6(net, train_iter, test_iter, num_epochs, lr, device): #save用GPU训练模型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()animator d2l.Animator(xlabelepoch, xlim[1, num_epochs],legend[train loss, train acc, test acc])timer, num_batches d2l.Timer(), len(train_iter)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)optimizer.step()with torch.no_grad():metric.add(l * X.shape[0], d2l.accuracy(y_hat, y), X.shape[0])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:animator.add(epoch (i1) / num_batches, (train_l, train_acc, None))test_acc evaluate_accuracy_gpu(net, test_iter)animator.add(epoch 1, (None, None, test_acc))print(floss {train_l:.3f}, train acc {train_acc:.3f}, ftest acc {test_acc:.3f})print(f{metric[2] * num_epochs / timer.sum():.1f} examples/sec fon {str(device)})此时我们可以开始训练和评估LeNet模型 lr, num_epochs 0.9, 10 train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu()) d2l.plt.show()运行输出这边我没有用远程的GPU在自己本地跑了本地只有CPU training on cpu loss 0.477, train acc 0.820, test acc 0.795 8004.2 examples/sec on cpu 运行图片 小结 1、卷积神经网络CNN是一类使用卷积层的网络 2、在卷积神经网络中我们组合使用卷积层、非线性激活函数和池化层 3、为了构造高性能的卷积神经网络我们通常对卷积层进行排列逐渐降低其表示的空间分辨率同时增加通道数 4、传统卷积神经网络中卷积块编码得到的表征在输出之前需要由一个或多个全连接层进行处理
http://www.dnsts.com.cn/news/253692.html

相关文章:

  • 网站首页排名下降android应用商店
  • 软件大全网址中山seo代理计费
  • 网站开发培训学校建筑设计适合的电脑
  • 网站开发的合同天津建设工程信息网怎么登录
  • 做毕业设计网站教程网站开发运行环境
  • 楼市房价最新消息短视频seo营销
  • 南宁企业自助建站婚庆网页设计作品dw
  • 二手车网站建设意见wordpress表结构怎么样
  • 网站栏目 英文深圳送花网站哪个好
  • 哪个网站可以查到个人名下公司网站建设怎样推广
  • gzip 网站建e网是什么软件
  • 为什麼建网站要先做数据库零基础自学python
  • 艺麟盛世可以做网站推广吗高速访问免费全自动网页制作系统
  • 建立网站目录的意义恩施州建设局网站
  • 九江网站开发公司网站首页收录突然没有了
  • word可以做网站链接吗php网站开发api
  • 网站部分频道完全不收录了怎么做旅游wordpress
  • 网站友情链接自动上链做平台网站要什么条件
  • 网站建设拾金手指下拉十九深圳app开发公司报价
  • 网站描述wordpress龙岩有什么公司
  • 图表统计类手机网站开发微信订阅号关键网站
  • 广西建设学院官方网站网站怎么做排名呢
  • 桂林网站搭建建设部的官方网站
  • 百度网站建设怎么联系一个数据库两个网站wordpress登陆
  • 南宁网站制作策划国际酒店网站建设不好
  • 网站建设系统设计网站不被收录怎么办
  • 数据交易网站开发做一个交易平台网站的成本
  • 做外贸生意用哪个网站最好wordpress企业网站主题
  • 西安本地十家做网站建设的公司网站建设 大公司排名
  • 苏州做网站的公司排名wordpress导入火车头