首页 > 其他分享 >机器学习——网络中的网络NiN

机器学习——网络中的网络NiN

时间:2023-11-08 16:44:26浏览次数:37  
标签:机器 nn 卷积 torch 网络 shape output NiN

NiN块

回想一下,卷积层的输入和输出由四维张量组成,张量的每个轴分别对应样本、通道、高度和宽度。 另外,全连接层的输入和输出通常是分别对应于样本和特征的二维张量。 NiN的想法是在每个像素位置(针对每个高度和宽度)应用一个全连接层。 如果我们将权重连接到每个空间位置,我们可以将其视为1*1卷积层,或作为在每个像素位置上独立作用的全连接层。 从另一个角度看,即将空间维度中的每个像素视为单个样本,将通道维度视为不同特征(feature)。

下图说明了VGG和NiN及它们的块之间主要架构差异。 NiN块以一个普通卷积层开始,后面是两个1*1的卷积层。这两个1*1卷积层充当带有ReLU激活函数的逐像素全连接层。 第一层的卷积窗口形状通常由用户设置。 随后的卷积窗口形状固定为1*1。

 以PyTorch为例

import torch
from torch import nn
from d2l import torch as d2l


def nin_block(in_channels, out_channels, kernel_size, strides, padding):
    return nn.Sequential(
        nn.Conv2d(in_channels, out_channels, kernel_size, strides, padding),
        nn.ReLU(),
        nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU(),
        nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU())

 

NiN模型

NiN和AlexNet之间的一个显著区别是NiN完全取消了全连接层。 相反,NiN使用一个NiN块,其输出通道数等于标签类别的数量。最后放一个全局平均汇聚层(global average pooling layer),生成一个对数几率 (logits)。NiN设计的一个优点是,它显著减少了模型所需参数的数量。然而,在实践中,这种设计有时会增加训练模型的时间。

net = nn.Sequential(
    nin_block(1, 96, kernel_size=11, strides=4, padding=0),
    nn.MaxPool2d(3, stride=2),
    nin_block(96, 256, kernel_size=5, strides=1, padding=2),
    nn.MaxPool2d(3, stride=2),
    nin_block(256, 384, kernel_size=3, strides=1, padding=1),
    nn.MaxPool2d(3, stride=2),
    nn.Dropout(0.5),
    # 标签类别数是10
    nin_block(384, 10, kernel_size=3, strides=1, padding=1),
    nn.AdaptiveAvgPool2d((1, 1)),
    # 将四维的输出转成二维的输出,其形状为(批量大小,10)
    nn.Flatten())

 我们创建一个数据样本来查看每个块的输出形状。

X = torch.rand(size=(1, 1, 224, 224))
for layer in net:
    X = layer(X)
    print(layer.__class__.__name__,'output shape:\t', X.shape)
Sequential output shape:     torch.Size([1, 96, 54, 54])
MaxPool2d output shape:      torch.Size([1, 96, 26, 26])
Sequential output shape:     torch.Size([1, 256, 26, 26])
MaxPool2d output shape:      torch.Size([1, 256, 12, 12])
Sequential output shape:     torch.Size([1, 384, 12, 12])
MaxPool2d output shape:      torch.Size([1, 384, 5, 5])
Dropout output shape:        torch.Size([1, 384, 5, 5])
Sequential output shape:     torch.Size([1, 10, 5, 5])
AdaptiveAvgPool2d output shape:      torch.Size([1, 10, 1, 1])
Flatten output shape:        torch.Size([1, 10])

 

总结

 

  • NiN使用由一个卷积层和多个1*1卷积层组成的块。该块可以在卷积神经网络中使用,以允许更多的每像素非线性。

  • NiN去除了容易造成过拟合的全连接层,将它们替换为全局平均汇聚层(即在所有位置上进行求和)。该汇聚层通道数量为所需的输出数量(例如,Fashion-MNIST的输出为10)。

 

 

  • 移除全连接层可减少过拟合,同时显著减少NiN的参数。

  • NiN的设计影响了许多后续卷积神经网络的设计。

 

 

标签:机器,nn,卷积,torch,网络,shape,output,NiN
From: https://www.cnblogs.com/yccy/p/17817753.html

相关文章

  • 机器学习——使用块的网络VGG
    VGG块虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板(例如VGG块)来指导后续的研究人员设计新的网络。在下面的几个章节中,我们将介绍一些常用于设计深层神经网络的启发式概念。经典卷积神经网络的基本组成部分是下面的这个序列:带填充以保持分辨率的卷积层;......
  • Docker容器间的网络设置
    1、构建自定义docker网络dockernetworkcreate-dbridgedocker_Net#其中,-d指定了docker的网络类型为bridge类型,并自定义docker网络的名称为docker_Net创建成功后,用dockernetworkls查看系统的docker网络: 2、创建docker容器dockerrun-it--rm\--namebusybox_2\......
  • 机器学习——深度卷积神经网络AlexNet
    AlexNet相对于LeNet的主要优势包括:1.更深的网络结构AlexNet有8层结构,而LeNet只有5层。网络更加深入有利于学习更抽象的高级特征。2.使用ReLU激活函数AlexNet使用ReLU激活函数,避免梯度消失问题,使得深层网络的训练更加容易。3.引入Dropout操作AlexNet在全连接层使用Dro......
  • 扫地机器人如何实现缺水检测-管道光电液位传感器
    扫地机器人是一种智能家居清洁设备,它可以通过自动巡航和清扫地面来减轻人们的家务负担。扫地机器人在工作时,需要确保水箱中有足够的清水进行清扫。当水箱缺水时,扫地机器人需要停止工作并发出缺水提示,以便及时为水箱加水。扫地机器人实现缺水检测的方法之一是使用管道光电液位传感器......
  • 基于图卷积网络的关系数据建模
    Abstract​ 知识图谱实现了各种各样的应用,包括问题回答和信息检索。尽管在创建和维护方面投入了巨大的努力,但即使是最大的知识库(如Yago、DBPedia或Wikidata)仍然不完整。我们介绍了关系图卷积网络(R-GCNs)并将其应用于两个标准的知识库补全任务:链接预测(恢复缺失的事实,即主题-预测-对......
  • 30张图详解IP地址网络知识
    你们好,我的网工朋友。IP地址是所有网络初级课程里最先涉及到的技术点,对于IP地址的合理规划是网络设计的重要环节,必须拿捏。IP地址规划的好坏,影响到网络路由协议算法的效率,影响到网络的性能,影响到网络的扩展,影响到网络的管理,也必将直接影响到网络应用的进一步发展。今天和你分享一篇......
  • 详解 Calico 三种模式(与 Fannel 网络对比学习)
    1.概述Calico是一个基于BGP的纯三层网络方案。它在每个计算节点都利用Linuxkernel实现了一个高效的虚拟路由器vRouter来进行数据转发。每个vRouter都通过BGP协议将本节点上运行容器的路由信息向整个Calico网络广播,并自动设置到达其他节点的路由转发规则。Calico保......
  • Pytorch 实现 GAN 网络
    Pytorch实现GAN网络原理GAN的基本原理其实非常简单,假设我们有两个网络,G(Generator)和D(Discriminator)。它们的功能分别是:G是一个生成网络,它接收一个随机的噪声z,通过这个噪声生成伪造数据,记做G(z)。D是一个判别网络,判别数据是不是“真实的”。它的输入参数是x,输出记为D(x)......
  • Jtti:美国服务器关网事件:美国服务器的建站网络安全优势
    美国服务器在全球范围内享有广泛的受欢迎度,但也需要注意网络安全问题。美国服务器在建站网络安全方面有一些优势,但同时也面临一些挑战。以下是关于美国服务器建站网络安全的一些优势和注意事项:优势:高质量的数据中心:美国拥有众多高质量的数据中心,提供物理安全性、灾难恢复、备份电......
  • 网络数据库练习题
    练习一1  简述什么是网络数据库。 2  SQLServer2000的常见版本有哪些。 3  解释以下若干名词术语:关系,元组,属性,主键。 4  简述SQLServer2000中的4个系统数据库的主要用途。 5  简述SQLServer2000中的一些常用数据类型(datetime,int,float,money)的用法或......