欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 网络中的网络 NiN

网络中的网络 NiN

2025/5/18 19:10:47 来源:https://blog.csdn.net/qq_58317297/article/details/140237031  浏览:    关键词:网络中的网络 NiN

一、全连接层问题

1、卷积层的参数:输入的通道数乘以输出的通道数再乘以窗口的高宽

2、全连接层的参数就是输入的元素个数乘以输出的元素个数,也就是输入的通道数乘以输入的高宽,再乘以输出的通道数乘以输出的高宽,贼大的量级

3、一个卷积层后跟两个全连接层(1*1卷积,步幅1,无填充,输出形状跟卷积层输出一样,起到全连接作用):1×1卷积层相当于一个全连接层,它所做的操作是,按照像素去逐一做的全连接层

二、NiN架构

1、无全连接层

2、交替使用NiN块和步幅为2的最大池化层(逐步减小高宽和增大通道数)

3、最后使用全局平均池化层得到输出(输出通道数是类别数),全局池化层它的高宽等于输入的高宽,等价于对一个类别来说,把它的平均拿出来,把这个值当做类别的预测,再加上soft max就能得到我们的预测了,这样我们就可以不用使用全连接层了,减少我们所占用内存的参数个数

三、总结

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

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

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

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

四、代码

1、NiN块

import torch
from torch import nn
from d2l import torch as d2ldef 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())

2、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),# 标签类别数是10nin_block(384, 10, kernel_size=3, strides=1, padding=1),nn.AdaptiveAvgPool2d((1, 1)),# 将四维的输出转成二维的输出,其形状为(批量大小,10)nn.Flatten())

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词