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

网站开发方向和移动开发方向那个好网站建设行业企业排名

网站开发方向和移动开发方向那个好,网站建设行业企业排名,用什么软件做网站hao,wordpress页面设计外贸计算机视觉是一门研究如何使计算机识别图片的学科#xff0c;也是深度学习的主要应用领域之一。 在众多深度模型中#xff0c;卷积神经网络“独领风骚”#xff0c;已经被称为计算机视觉的主要研究根据之一。 一、卷积神经网络的基本思想 卷积神经网络最初由 Yann LeCun也是深度学习的主要应用领域之一。 在众多深度模型中卷积神经网络“独领风骚”已经被称为计算机视觉的主要研究根据之一。 一、卷积神经网络的基本思想 卷积神经网络最初由 Yann LeCun杨立昆等人在1989年提出是最初取得成功的深度神经网络之一。 1、局部连接 1、全局连接 传统的BP神经网络例如多层感知器前一层的某个节点与后一层的所有节点都有连接后一层的某一个节点与前一层的所有节点也有连接这种连接方式成为全局连接。 如果前一层有M个节点后一层有N个节点我们就会有 M×N 个链接权值 每一轮反向传播更新权值的时候都要对这些权值进行重新计算造成了 OM×NOn ²的计算与内存开销。 2、局部连接 而局部连接的思想就是使得两层之间只有相邻的结点才进行连接即连接都是“局部”的。 以图像处理为例直觉上图像的某一个局部的像素点组合在一起共同呈现出一些特征而图像中距离比较远的像素点组合起来则没有什么实际意义因此这种局部连接的方式可以在图像处理的问题上有较好的表现。 如果把连接限制在空间中相邻 c 个节点就把连接权值降低到了 c×N计算与内存开销就降低到了 Oc×N On 。 2、参数共享 既然在图像处理中我们认为图像的特征具有局部性那么对于每一个局部使用不同的特征抽取方式即不同的连续权值是否合理 由于不同的图像在结构上相差甚远同一个局部位置的特征并不具有共性对于某一个局部使用特定的连续权值不能让我们得到更好的结果。 因此我们考虑让空间中不同位置的结点连续权值进行共享例如在局部连接的图中属于结点 s₂的连续权值 w { w₁w₂w₃|w₁x₁ → s₂w₂x₂ → s₂w₃x₃ →s₂} 可以被结点s₃ 以 w { w₁w₂w₃|w₁x₂ → s₃w₂x₃ → s₃w₃x₄ →s₃} 的方式共享。其他结点的权值共享类似。 这样一来两层之间的连续权值就减少到 c 个。虽然在前向传播和反向传播的过程中计算开销仍为 On但内存开销被减少到常数级别Oc。 二、卷积操作 离散的卷积操作正是这样一种操作它满足了以上局部连接、参数共享的性质。代表卷积操作的结点层称为卷积层。 在泛函分析中卷积被 f * g 定义为 则一维离散的卷积操作可以被定义为 现在假设 f 和 g 分别代表一个从向量下标到向量元素值的映射令 f 表示输入向量g 表示的向量称为卷积核kermel则卷积核施加于输入向量上的操作类似于一个权值向量在输入向量上移动每移动一步进行一次加权求和操作每一步移动的距离被称为步长stride)。 例如我们取输入向量大小为5卷积核大小为3步长为1则卷积操作过程如图 卷积核从输入向量左边开始扫描权值在第一个位置分别与对应输入值相乘求和得到卷积特征值向量的第一个值接下来移动1个步长到达第二个位置进行相同操作依此类推。 这样就实现了从前一层的输入向量提取特征到后一层的操作这种操作具有局部连接每个结点只与其相邻的3个结点有连接以及参数共享所用的卷积核为同一个向量的特征。 类似地我们可以拓展到二维如图以及更高维度的卷积操作。 1、多个卷积核 利用一个卷积核进行卷积抽取特征是不充分的因此在实践中通常使用多个卷积核来提升特征提取的效果之后将不同卷积核卷积所得的特征张量沿第一维拼接形成更高一个维度的特征张量。 2、多通道卷积 在处理彩色图像时输入的图像有R、G、B这3个通道的数值这个时候分别使用不同的卷积核对每一个通道进行卷积然后使用线性或非线性的激活函数将相同位置的卷积特征合并为一个。 3、边界填充 注意在图中卷积核的中心 g(2) 并不是从边界 f (1) 上开始扫描的。以一维 卷积为例大小为 m 的卷积核在大小为 n 的输入向量上进行操作后所得的卷积特征向量大小会缩 小为 n-m1。当卷积层数增加的时候特征向量大小就会以 m-1的速度“坍缩”这使得更深的神经网络变得不可能因为在叠加到第个卷积层之后卷积特征不足 m-1 维。 为了解决这一问题人们通常采用在输入张量的边界上填充0的方式使得卷积核的中心可以从边界上开始扫描从而保持卷积操作输入张量和输出张量的大小不变。 三、池化层 池化pooling如下图的目的是降低特征空间的维度只抽取局部最显著的特征同时这些特征出现的具体位置也被忽略。 这样做是符合直觉的以图像处理维例我们通常关注的是一个特征是否出现而不太关心它们出现在哪里这被称为图像的静态性。 通过池化降低空间维度的做法不但减少了计算开销还使得卷积神经网络对于噪声具有健壮性。 常见的池化类型有最大池化、平均池化等。 最大池化是指在池化区域中取卷积特征值最大的作为所得池化特征值 平均池化层是指在池化区域中取所有卷积特征值的平均作为池化特征值。 如上图所示在二维的卷积操作之后得到一个20×20的卷积特征矩阵池化区域大小为10×10这样得到的就是一个4×4的池化特征矩阵。 需要注意的是与卷积核在重叠的区域进行卷积操作不同池化区域是互不重叠的。 四、卷积神经网络 一般来说卷积神经网络由卷积层、池化层、非线性激活函数层组成。如左下图 在图像分类中表现良好的深度往往由许多“卷积层池化层”的组合堆叠而成通常多达数十乃至上百层。如右下图 五、经典网络结构 VGG、InceptionNet、ResNet等是从大规模图像数据集训练的用于图像分类的网络。ImageNet从2010年起每年都举办图像分类的竞赛为了公平起见它为每位参赛者提供来自1000个类别的120万张图像。 从如此巨大的数据集后训练出的深度学习模型特征具有非常良好的泛化能力在迁移学习后它可以被用于除图像分类之外的其他任务比如目标检测、图像分割等。 PyTorch 的 torchvision.models 为我们提供了大量的模型实现以及模型的预训练权重文件其中就包括本节介绍的VGG、ResNet、InceptionNet。 1、VGG网络 VGG网络的特点是用 3×3 的卷积核代替先前网络如AlexNet的大卷积核。 比如3个步长为1的 3×3 的卷积核和一个 7×7 的卷积核的感受野receptive field是一致的2个步长为1的 3×3 的卷积核和一个 5×5 的卷积核的感受野是一致的。 这样感受野没有改变但是却加深了网络的深度提升了网络的拟合能力。 VGG网络的网络结构如图所示 除此之外VGG的全 3×3 的卷积核结构减少了参数量 比如一个 7×7 的卷积核其参数量为 7×7×C×C而具有相同感受野的全 3×3 的卷积核的参数量为 3×3×3×C×C。 VGG网络和AlexNet的整体结构一致都是先用5层卷积层提取图像特征再用3层全连接层作为分类器。 【不过VGG网络的 “层” 在VGG中称为Stage是由几个 3×3 的卷积层叠加起来的 而AlexNet是1个大卷积层为一层。】 所以 AlexNet 只有8层而VGG网络则可多达19层VGG网络在 ImageNet 的 Top5 准确率达到了92.3%。VGG网络的主要问题是最后的3层全连接层的参数量过于庞大。 2、InceptionNet InceptionNetGoodLeNet主要是由多个Inception模块实现的Inception模块的基本结构如图所示 它是一个分支结构一共有4个分支 第1个分支是进行 1×1 卷积 第2个分支是先进行 1×1 卷积然后再进行 3×3 卷积 第3个分支同样先进行 1×1 卷积然后再进行 5×5 卷积 第4个分支先进行 3×3 的最大池化然后再进行 1×1 卷积。 最后4个分支计算过的特征映射用沿通道维度拼接的方式组合到一起。 图中的中间层可以分为4列来看其中第1列的 1×1 的卷积核和中间两列的 3×3、5×5的卷积核主要用于提取特征。 不同大小的卷积核拼接到一起使得这一结构具有多尺度的表达能力。 右侧3列的1×1的卷积核用于特征降维可以减少计算量。 第4列最大池化层的使用是因为实验表明池化层往往有比较好的效果。 这样设计的Inception模块具有相当大的宽度计算量却更低。前面提到了VGG的主要问题是最后3层全连接层参数量过于庞大在InceptionNet中弃用了这一结构取而代之的是一层全局平均池化层和单层的全连接层。 这样减少了参数量并且加快了模型的推断速度。 最后InceptionNet达到了22层为了让深度如此大的网络能够稳定地训练Inception在网络中间添加了额外的两个分类损失函数在训练中这些损失函数相加得到一个最终的损失函数在验证过程中这两个额外的损失函数不再使用。InceptionNet 在 ImageNet 的 Top5准确率为93.3%不仅准确率高于VGG网络推断速度还更甚一筹。 3、ResNet 神经网络越深对复杂特征的表示能力就越强。但是单纯地增大网络的深度会导致当反向传播算法在传递梯度时发生梯度消失现象从而导致网络的训练无效。通过一些权重初始化方法和 Batch Normalization可以解决这一问题。 但是即使使用了这些方法网络在达到一定深度之后模型训练的准确率不会再提升甚至会开始下降这种现象称为训练准确率的退化degradation问题。 退化问题表明深层模型的训练是非常困难的。 ResNet提出了残差学习的方法用于解决深度学习模型的退化问题。 假设输入数据是 x 常规的神经网络是通过几个堆叠的层去学习映射 Hx而ResNet学习的是映射和输入的残差 Fx Hx- x。 相应地原有的表示就变成 Hx Fx x。 尽管两种表示是等价的但实验表明残差学习更容易训练。ResNet是由几个堆叠的残差模块表示的可以将残差结构形式化为 y Fx{W} x 其中 Fx{W} 表示要学习的残差映射ResNet的基本结构如图所示 图中残差映射一共有两层可表示为 y W₂δW₁x b₁ b₂ 。 其中 δ 表示 ReLU激活函数。 图中例子一共有两层ResNet的实现中大量采用了两层或三层的残差结构而实际这个数量并没有限制当它仅为一层时残差结构就相当于一个线性层所以就没有必要采用单层的残差结构了。 Fx x 在ResNet中通过 shortcut 连接和逐元素相加实现相加后的结果会作为下一个ReLU激活函数的输入。 shortcut 连接相当于对输入x进行恒等映射indentity map。在非常极端的情况下残差Fx会等于0而使得整个残差模块仅进行一次恒等映射这完全是由网络自主决定的只要它自身认为这是更好的选择。 如果 Fx和 x 的维度并不相同那么可以采用如下结构使得其维度相同 y Fx{W} {W} x  。 但是ResNet的实验表明使用恒等映射就能够很好地解决退化问题并且足够简单计算量足够小。 ResNet的残差结构解决了深度学习模型的退化问题在ImageNet的数据集上最深的ResNet模型达到了152层其Top5准确率达到了95.51%。 六、用PyTorch进行手写数字识别   torch.utils.data.Datasets 是PyTorch用来表示数据集的类在本节我们使用 torchvision.datasets.MNIST 构建手写数字数据集。 实例化 datasets对象 datasets.MNIST能够自动下载数据并保存到本地磁盘参数train默认为True用于控制加载的数据集是训练集函数测试集。 使用 lenmnnist这里调用__len__方法。 使用mnist [ j ] 调用的是__getitem__。 绘制MNIST手写数字数据集 当我们自己建立数据集时需要继承Dataset并且覆写__item__和__len__两个方法。 数据预处理是非常重要的步骤PyTorch提供了 torchvision.transforms可用于处理数据及实现数据增强。 在这里我们使用了transforms.ToTensor它将 PIL Image 或者 numpy.ndarray 类型的数据转换为 Tensor 并且它会将数据从 [0,255] 映射到 [0,1]。 transforms.Normalize会将数据标准化将训练数据标准化会加速模型在训练中的收敛。 在使用中可以利用torchvision.transforms.Compose将多个transforms组合到一起被包含的transforms会顺序执行。 准备好处理数据的流程后就可以读取用于训练的数据了torch.utils.data.DataLoader提供了迭代数据、随机抽取数据、批处理数据、使用multiprocrssing并行化读取数据的功能。 下面定义了函数 imshow 将数据从标准化的数据中恢复出来将数据从Tensor类型转换为 ndarray这样才可以用Matplotlib绘制出来。 将矩阵的维度从 (C,W,H转化为W,H,C。注C、W、H属于通用符分别表示 channel、weight、height。 前面展示了使用PyTorch加载数据处理数据的方法。 下面我们构建用于识别手写数字的神经网络模型。 我们可以直接通过输出nn.Module的对象看到其网络结构 在准备好数据和模型后我们就可以训练模型了。 下面我们分别定义数据处理和加载流程、模型、优化器、损失函数以及用准确率评估模型能力。 from torch import optim from tqdm import tqdm #数据处理和加载 trans transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,),(0.3081,))]) mnist_train datasets.MNIST(root~,trainTrue,downloadTrue,transformtrans) mnist_val datasets.MNIST(root~,trainFalse,downloadTrue,transformtrans)trainloader DataLoader(mnist_train, batch_size16, shuffleTrue,num_workers4) valloader DataLoader(mnist_val, batch_size16, shuffleTrue,num_workers4)#模型 model MLP()#优化器 optimizer optim.SGD(model.parameters(),lr0.01,momentum0.9)#损失函数 celoss nn.CrossEntropyLoss() best_acc 0#计算准确率 def accuracy(pred,target):pred_label torch.argmax(pred,1)correct sum(pred_label target).to(torch.float)#acc correct/float(len(pred))return correct,len(pred)acc {train:[],val:[]} loss_all {train:[],val:[]}for epoch in tqdm(range(10)):#设置为验证模式model.eval()numer_val,denumer_val,loss_tr 0.,0.,0.with torch.no_grad():for data,target in valloader:output model(data)loss celoss(output,target)loss_tr loss.datanum,denum accuracy(output,target)numer_val numdenumer_val denum#设置为训练模式model.train()numer_tr,denumer_tr,loss_val 0.,0.,0.for data,target in trainloader:optimizer.zero_grad()output model(data)loss celoss(output,target)loss_val loss.dataloss.backward()optimizer.step()num,denum accuracy(output,target)numer_tr numdenumer_tr denumloss_all[train].append(loss_tr/len(trainloader))loss_all[val].append(loss_val/len(trainloader))acc[train].append(numer_tr/denumer_tr)acc[val].append(numer_val/denumer_val) 将训练数据迭代10个轮次epoch并将训练和验证的准确率和损失记录下来。 模型训练迭代后训练集和验证集的损失迭代图像如图 模型训练迭代后训练集和验证集的准确率迭代图如图
http://www.hkea.cn/news/14425988/

相关文章:

  • 做网站先做母版页网站页脚
  • 手机微网站建设方案视频网站广告代码
  • 做外贸的几个网站网站设计制作要多少钱
  • 烟台酒店网站建设自我介绍网页
  • 珠海网站建设多少钱企业型网站建设制作平台
  • 专业外贸制作网站线上设计师都在哪挣钱
  • 玉树营销网站建设公司萍乡网站设计公司
  • 营销类网站 英文哪家的网站效果好
  • 温州建设局官方网站在discuz做网站
  • iis7新建网站12360官方网站下载
  • 四川企业品牌网站建设hot插件 wordpress
  • h5网站模板下载一键生成logo免费图
  • 济南城市建设集团网站企业培训课程一览表
  • 做电商网站php开发的流程科技九洲君
  • 网站项目评价长治建网站
  • 福建坤辕建设工程有限公司网站wordpress pv 性能
  • 做新闻类网站如何盈利网站推广方案策划书
  • wordpress建站平台推广公司app好做吗
  • 外贸石材网站现在网站开发语言
  • 个人做网站的好处企业专业搜索引擎优化
  • 防钓鱼网站宣传深圳最新政策
  • 重庆网站建设模板制作网站开发代理商
  • 顺义企业网站建站公司百度验证网站
  • 做网站费用入什么科目有看投+app下载安装手机版
  • 做淘宝保健品药品在哪个网站找素材8免费网站建站
  • 移动端网站建设的尺寸怎么增加网站的外链
  • 小说网站开发过程 实训报告ps网站制作教程
  • 遵义市住房和城乡建设厅网站最近国内网站网站做的最好的是哪个
  • 手机上怎么查看网站设计网站建设制作哪家好
  • 别人做的网站不能用怎么办wordpress自适应站点