时间:2021-05-22
当使用pytorch写网络结构的时候,本人发现在卷积层与第一个全连接层的全连接层的input_features不知道该写多少?一开始本人的做法是对着pytorch官网的公式推,但是总是算错。
后来发现,写完卷积层后可以根据模拟神经网络的前向传播得出这个。
全连接层的input_features是多少。首先来看一下这个简单的网络。这个卷积的Sequential本人就不再啰嗦了,现在看nn.Linear(???, 4096)这个全连接层的第一个参数该为多少呢?
请看下文详解。
class AlexNet(nn.Module): def __init__(self): super(AlexNet, self).__init__() self.conv = nn.Sequential( nn.Conv2d(3, 96, kernel_size=11, stride=4), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), nn.Conv2d(96, 256, kernel_size=5, padding=2), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2) ) self.fc = nn.Sequential( nn.Linear(???, 4096) ...... ...... )首先,我们先把forward写一下:
def forward(self, x): x = self.conv(x) print x.size()就写到这里就可以了。其次,我们初始化一下网络,随机一个输入:
import torchfrom Alexnet.AlexNet import *from torch.autograd import Variableif __name__ == '__main__': net = AlexNet() data_input = Variable(torch.randn([1, 3, 96, 96])) # 这里假设输入图片是96x96 print data_input.size() net(data_input)结果如下:
(1L, 3L, 96L, 96L)(1L, 256L, 1L, 1L)显而易见,咱们这个全连接层的input_features为256。
以上这篇pytorch神经网络之卷积层与全连接层参数的设置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
全连接层的作用如下: 1、首先全连接层(fullyconnectedlayers,FC)在整个卷积神经网络中起到“分类器”的作用。 2、其次目前由于全连接层
本文使用的数据集是MNIST,主要使用两个卷积层加一个全连接层构建的卷积神经网络。先载入MNIST数据集(手写数字识别集),并创建默认的InteractiveS
利用pytorch来构建网络模型有很多种方法,以下简单列出其中的四种。假设构建一个网络模型如下:卷积层--》Relu层--》池化层--》全连接层--》Relu层
本文为大家讲解了pytorch实现CNN卷积神经网络,供大家参考,具体内容如下我对卷积神经网络的一些认识卷积神经网络是时下最为流行的一种深度学习网络,由于其具有
CNN最大的特点在于卷积的权值共享结构,可以大幅减少神经网络的参数量,防止过拟合的同时又降低了神经网络模型的复杂度。在CNN中,第一个卷积层会直接接受图像像素级