Python 了解Conv2d的输入和输出大小
我正在学习使用PyTorch(使用CIFAR-10数据集)进行图像分类 我试图了解给定的Python 了解Conv2d的输入和输出大小,python,deep-learning,pytorch,conv-neural-network,Python,Deep Learning,Pytorch,Conv Neural Network,我正在学习使用PyTorch(使用CIFAR-10数据集)进行图像分类 我试图了解给定的Conv2d代码的输入和输出参数: import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) sel
Conv2d
代码的输入和输出参数:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
我的conv2d()
理解(如果我错了/遗漏了什么,请更正):
- 因为图像有3个通道,所以第一个参数是
。3
是过滤器的数量(随机选择)6
是内核大小(5,5)(随机选择)5
- 同样,我们创建下一层(上一层输出是该层的输入)
- 现在使用
函数创建一个完全连接的层: self.fc1=nn.线性(16*5*5120)linear
16*5*5
:这里的16
是最后一个conv2d层的输出,但是在这里5*5
是什么
这是内核大小吗?还是别的什么?如何知道我们需要乘以5*5或4*4或3*3…..
我研究并了解到,由于图像大小是32*32
,应用max pool(2)2次,因此图像大小将是32->16->8,因此我们应该将其乘以最后一次输出大小*8*8
,但在这个链接中它是5*5
有人能解释一下吗?这些是图像大小本身的尺寸(即高度x宽度) 未加卷积 除非用零填充图像,否则卷积滤波器会将输出图像的大小在高度和宽度上缩小
filter\u size-1
:
3-filter将5x5图像转换为(5-(3-1)x 5-(3-1))图像
零填充保留图像尺寸
让我们。