精华内容
下载资源
问答
  • 使用Pytorch实现NIN 本文在网络中非官方实施 0.开发环境 Docker Image - tensorflow/tensorflow:tensorflow:2.4.0-gpu-jupyter Library - Pytorch : Stable (1.7.1) - Linux - Python - CUDA (11.0) 使用单GPU 1....
  • NIN网络模型模块

    2018-04-21 10:49:25
    NIN模型的模块化实现 result值用于loss计算和预测 仅供参考
  • Nin=vin+1; % <11>error(nargchk(1Ninnargin)) %if nargout>6 %error('Too many output arguments')endt=0:pi/20:2*pi;x=r*exp(i*t);s=pi*r*r;if nargout==0switch Nincase 1plot(x'b')case 2r2=varargin{1...
  • NiN 论文总结

    2021-01-20 11:48:23
    NiN 论文总结一、论文翻译摘要(一)Introduction(二)Convolutional Neural Networks(三)Network In Network1. MLP Convolution Layers2. Global Average Pooling3. Network In Network Structure(四)...
  • 研究了固溶处理温度对热轧态10Cr21Mn16NiN高锰氮奥氏体不锈钢微观组织、力学性能和腐蚀性能的影响,并进一步揭示了该材料的低温韧脆转变行为。结果表明,随着固溶温度的升高,屈服强度和抗拉强度逐渐降低,而延伸率和耐...
  • NiN

    2019-06-21 23:06:42
    1.全用卷积 不用全连接 a。用全连接模型会比较大 AlexNet模型大小700M 400-500M是最后全连接 b。全连接 容易过拟合 需要加入dropout 批量归一 =》要调参 效果不一定那么好 2.用小网络 看起来比较小的完整的网络...

    1.全用卷积 不用全连接   a。用全连接模型会比较大  AlexNet模型大小700M 400-500M是最后全连接   

                                            b。全连接 容易过拟合   需要加入dropout 批量归一  =》要调参 效果不一定那么好

    2.用小网络 看起来比较小的完整的网络嵌在一起   1*1卷积核

    展开全文
  • 文章目录LeNet、AlexNet、VGG、NiN、GoogLeNet全连接层与卷积层的优势对比LeNetLeNet模型LeNet的pytorch实现AlexNetAlexNet模型AlexNet的pytorch实现VGGVGG模型VGG的实现NiN(网络中的网络)NiN模型NiN的pytorch实现...
  • NIN

    2018-03-04 17:48:59
    论文核心思想如下图所示:

    论文核心思想如下图所示:
    这里写图片描述

    展开全文
  • ninnin是ninjatool-源码

    2021-02-06 04:49:31
    nin是ninjatool nin是Ninjadev的内部演示工具。 它是用于简化基于浏览器的WebGL演示开发的工具。 核心功能包括: 基于节点的演示工具,可以轻松地重用效果,场景并创建疯狂的转场。 在浏览器中实时重新加载着色...
  • 网络中的网络(NiN) (10月14号(组内)–d2l)深度卷积神经网络(NiN) LeNet、AlexNet 和 VGG 都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。 ...

    网络中的网络(NiN)

    (10月14号(group)–d2l)深度卷积神经网络(NiN)

    LeNet、AlexNet 和 VGG 都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。
    AlexNet 和 VGG 对 LeNet 的改进主要在于如何扩大和加深这两个模块。
    或者,可以想象在这个过程的早期使用全连接层。
    然而,如果使用稠密层了,可能会完全放弃表征的空间结构。
    网络中的网络 (NiN) 提供了一个非常简单的解决方案:在每个像素的通道上分别使用多层感知机 :cite:Lin.Chen.Yan.2013

    (NiN块)

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

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

    在这里插入图片描述

    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())
    
    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使用窗口形状为 11 × 11 11\times 11 11×11 5 × 5 5\times 5 5×5 3 × 3 3\times 3 3×3的卷积层,输出通道数量与 AlexNet 中的相同。
    每个 NiN 块后有一个最大汇聚层,池化窗口形状为 3 × 3 3\times 3 3×3,步幅为 2。

    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())
    
    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])
    

    [训练模型]

    和以前一样,我们使用 Fashion-MNIST 来训练模型。训练 NiN 与训练 AlexNet、VGG时相似。

    lr, num_epochs, batch_size = 0.1, 10, 128
    train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)
    d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())
    
    loss 1.213, train acc 0.603, test acc 0.609
    750.7 examples/sec on cuda:0
    

    在这里插入图片描述

    左图为去掉一个 1 × 1 1\times 1 1×1卷积之后的模型学习曲线、右图为原始模型设置的学习曲线;

    # Find total parameters and trainable parameters
    # 统计模型参数总量和可训练参数总量-----取消了其中的一个1x1卷积层
    total_params = sum(p.numel() for p in net.parameters())
    print(f'{total_params:,} total parameters.')
    
    total_trainable_params = sum(p.numel() for p in net.parameters() if p.requires_grad)
    print(f'{total_trainable_params:,} training parameters.')
    
    1,769,112 total parameters.
    1,769,112 training parameters.
    
    # Find total parameters and trainable parameters
    # 统计模型参数总量和可训练参数总量------保留原始模型设计
    total_params = sum(p.numel() for p in net.parameters())
    print(f'{total_params:,} total parameters.')
    
    total_trainable_params = sum(p.numel() for p in net.parameters() if p.requires_grad)
    print(f'{total_trainable_params:,} training parameters.')
    
    1,992,166 total parameters.
    1,992,166 training parameters.
    

    小结

    • NiN使用由一个卷积层和多个 1 × 1 1\times 1 1×1 卷积层组成的块。该块可以在卷积神经网络中使用,以允许更多的每像素非线性。
    • NiN去除了容易造成过拟合的全连接层,将它们替换为全局平均汇聚层(即在所有位置上进行求和)。该汇聚层通道数量为所需的输出数量(例如,Fashion-MNIST的输出为10)。
    • 移除全连接层可减少过拟合,同时显著减少NiN的参数。
    • NiN的设计影响了许多后续卷积神经网络的设计。

    练习

    1. 调整NiN的超参数,以提高分类准确性。
    2. 为什么NiN块中有两个 1 × 1 1\times 1 1×1 卷积层?删除其中一个,然后观察和分析实验现象。
    3. 计算NiN的资源使用情况。
      1. 参数的数量是多少?
      2. 计算量是多少?
      3. 训练期间需要多少显存?
      4. 预测期间需要多少显存?
    4. 一次性直接将 384 × 5 × 5 384 \times 5 \times 5 384×5×5 的表示缩减为 10 × 5 × 5 10 \times 5 \times 5 10×5×5 的表示,会存在哪些问题?

    Discussions

    展开全文
  • 深度卷积神经网络AlexNet 重要的计算例题:通道数为3,宽高均为224的输入,经过一层输出通道数为96,卷积核大小为11,步长为4,无padding的卷积层后,得到的feature map的宽高为: (原始宽高 – kernel_size)/步长下...
  • Nin10do-项目 Raspberry Pi 'Nin10do':基于 Retropie 项目的新型 3D 打印“复古风格”游戏机。 它是什么?? Nin10do 游戏机是一款功能强大的新型游戏机,您可以在上面玩所有您喜欢的旧游戏。 它在 Raspberry Pi-B...
  • NIN详解

    2021-03-03 16:49:29
    NIN 论文《Network In Network》 1. 设计思路 卷积神经网络(CNN,Convolutional Neural Network)中,包含多个卷积层和池化层。 在传统的CNN模型中,卷积层通过filter进行卷积操作,再使用非线性激活函数进行处理...

    NIN

    论文《Network In Network》

    1. 设计思路

    卷积神经网络(CNN,Convolutional Neural Network)中,包含多个卷积层和池化层。

    在传统的CNN模型中,卷积层通过filter进行卷积操作,再使用非线性激活函数进行处理,从而产生特征映射(feature mapping)。其中,高层卷积层提取到的feature mapping是在底层卷积层提取到的feature mapping的基础上进行再提取得到的,所以如果提高每个卷积层的特征提取能力,那么对于整体的特征能力来说也会有一定提升。

    CNN的卷积层可以看作是一个广义的线性模型(GLM, Generalized Linear Model)。当特征是线性可分时,卷积层可以表现出很好的提取性能,然而输入数据的特征往往是高度非线性的,此时卷积层并不能表现出很好的特征提取能力。这个问题在传统CNN中可以通过增加卷积层中的filter数量来进行补偿,但是增加filter数量会为一下层带来负担。那么考虑使用一个功能更强大的非线性函数逼近器(nonlinear function approximator)去替代GLM就可以提高模型的特征提取能力。

    2.模型细节

    2.1 Mlpconv Layer

    按照上述思路,NIN(Network In Network)中使用包含多层感知机(MLP,Multi-Layer Perceptron)的mlpconv层作为非线性函数逼近器替代传统CNN中的卷积层,以此来提高每层的特征提取能力。

    mlpconv

    常见的通用非线性函数逼近器有径向基多层感知机(MLP),NIN模型在mlpconv中使用MLP的原因如下:

    1. MLP和conv都适用于反向传播算法;
    2. MLP可以有很多层,以此来实现特征的复用;

    具体来说,NIN模型中的mlpconv层是在对input进行卷积后,将卷积的得到的feature mapping送入MLP中。

    从跨通道(cross channel)的角度来看,MLP等效于在卷积的基础上的一个级联的跨通道参数池化层(cascaded cross channel parametric pooling)。在MLP的每一层,对输入的feature mapping进行线性组合,然后通过ReLU激活函数,重复这个过程,以实现跨通道的信息交互(可以参考1*1的卷积层,1*1卷积层在对feature mapping进行embedding时,实现了feature mapping的跨通道信息交互)。

    2.2 全局平均池化 (GAP,Global Average Pooling)

    在传统的CNN模型中,卷积层的主要功能是提取图像特征,在最后一层卷积层得到的feature mapping以向量的形式送入全连接层(FC,fully connected layer),通过softmax logistic regression layer后实现对图片的分类。由于FC的参数很多,很容易出现过拟合问题,使用Dropout可以在一定程度解决过拟合问题。

    在NIN模型中,文章提出使用全局平均池化层(GAP)替代传统CNN模型中的全连接层(FC)。

    GAP的具体操作为:将最后一层卷积层得到的特征向量的每个通道的平均值作为输入直接送入softmax logistic regression layer。

    GAP与FC的相同点是两者都对特征向量进行了一定的线性组合,不同点在于两者进行线性组合的变换矩阵不同。相比于FC,GAP有如下优势:

    1. GAP提高了CNN的可解释性,FC层作为一个黑盒,使得传统CNN的可解释性较差;
    2. GAP没有需要进行优化的参数,减少了模型整理的参数数量,减少了模型的过拟合问题;
    3. GAP是对特征向量的每个通道求平均数,这提高了模型对输入的空间平移问题更具鲁棒性。

    文中对GAP、FC、FC+Dropout在CIFAR-10数据集上的性能进行了测试,实验表明CNN模型在使用GAP时的性能最好。

    GAP vs. FC

    同时,文中也验证了GAP可以作为一个正则化器来减少过拟合问题,其效果略差于Dropout,原因可能是GAP需要卷积层中加入非线性激活函数。

    3. 模型结构

    NIN模型的结构如下图,由若干mlpconv层、GAP层以及softmax层组成。

    NIN

    展开全文
  • NiN块是NiN中的基础块。它由一个卷积层加两个充当全连接层的1×1卷积层串联而成。其中第一个卷积层的超参数可以自行设置,而第二和第三个卷积层的超参数一般是固定的。 def nin_block(in_channels, out_channels, ...
  • $nin $exists $regex 解析字符串整数并浮点为数字 将字符串布尔值解析为ture / false布尔值 操作 请求参数 查询对象 等于 ?foo=bar { foo: "bar" } 不等 ?foo=!bar { foo: { $ne: "bar" }} 存在 ?foo= { ...
  • NIN原理和实现

    千次阅读 2019-11-20 10:36:55
    个人博客:http://www.chenjianqu.com/ 原文链接:... 论文笔记 1.解决了什么 ...提出mlpconv,引入了1x1卷积和global average pooling,提出Network In Network(NIN),整个模型未使用全连接。 3...
  • VGG和NIN网络

    2020-02-18 11:48:46
    本文主要是学习了Dive-into-DL-PyTorch这本书。因此这篇博客的大部分内容来源于此书。框架使用的是pytorch,开发工具是pycharm 参考 动手学深度学习Dive-into-DL-Pytorch 参考链接 ...
  • 文章目录引入1 NIN块2 NIN模型3 模型训练 引入   NIN意为网络中的网络,提出了串联多个由卷积层和“全连接”层构成的小网络,以此构建一个深层网络[1]\color{red}^{[1]}[1]。 1 NIN块   NIN使用1×11 \times 11...
  • 目录AlexNetAlexNet摘要AlexNet代码VGGVGG摘要VGG的优缺点代码NiNNiN摘要GoogLeNetGoogLeNet完整结构 AlexNet AlexNet摘要 由于受到计算机性能的影响,虽然LeNet在图像分类中取得了较好的成绩,但是并没有引起很多的...
  • NIN 论文笔记

    千次阅读 2018-05-13 00:11:20
    NIN: Network In Network 摘要:我们提出了一个名为‘Network In Network (NIN)’的神奇深度网络,去提高局部视野内的local pathes的模型判别力。卷 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片...
  • 12 VGG,NIN

    2021-08-26 14:31:03
    NIN 网络中的网络 LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果 NiN使用1×1卷积层代替全连接层。NiN块由一个卷积层加两个1×1卷...
  • 发现加了dropout的NIN比不加dropout的NIN结果提升了20% (结论:dropout厉害!)。完事再补一句: 不加dropout的NIN结果仅次于加了dropout的Maxout ,加上dropout的NIN就藐视一切啦,NIN厉害!最后最后作者又在做了...
  • 卷积神经网络之NiN(2013)

    千次阅读 2018-11-07 12:58:57
    例如没有NiN的当前卷积是这样的:3x3 256 [conv] -> [maxpooling],当增加了NiN之后的卷积是这样的:3x3 256 [conv] -> 1x1 256 [conv] -> [maxpooling]。 [外链图片转存失败(img-lmbqXcOh-1567246941570)...
  • 深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意。...
  • 深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 机器学习的特征提取:手工定义的特征提取函数 ...
  • NIN VGG 前言 之前刚开始接触CNN的时候导师让我写过综述,就把一些经典的CNN网络整理一下。 LeNet CNN的开山之作,是LeCun在98年解决手写是数字识别任务时提出的,从那时起CNN的基本架构就定下来了:卷积、池化、...
  • NIN层 简介: 我们提出了一种新型的深度网络结构,称为“Network In Network”(NIN),它可以增强模型在感受野(receptive field)内对局部区域(local patches)的辨别能力。传统的卷积层使用线性滤波器来扫描输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,977
精华内容 6,790
关键字:

NIN