pytorch尝试入门VGG,实现猫狗分类的baseline

照着教程【实战 VGG实现kaggle猫狗图片分类】完整流程 | 提供VGG11,VGG13,VGG16,VGG19 Pytorch 代码写了一下午。做一下学习笔记。

模型如下

pytorch尝试入门VGG,实现猫狗分类的baseline_第1张图片

关于报错

pytorch尝试入门VGG,实现猫狗分类的baseline_第2张图片

 第一反应去看评论区,没人提到这个问题,应该是我手残打错了。再看看报错信息,提示两个矩阵不能相乘。按照我浅薄的理解,因为模型的输入需要一个固定的大小,我们应该是在初始化MyDataset的时候就已经把输入图片的矩阵resize成(224, 224)的形状了。

前面这个32应该是我设置的batch_size没错。但是问题来了,224*224=50176,这和上面的四个数字都没有直接关系,正好是100352的一半。再看看后面这个数字,25088=512*7*7,512是最后一个卷积层的输出维度,这没有问题。

突然在注意到VGG 11的定义。

pytorch尝试入门VGG,实现猫狗分类的baseline_第3张图片

再一看我的网络,怎么只有13层,果然少了一个block,加上后正好输出的通道数再翻一番。这样就是100352了。

现在的模型是这样的:

pytorch尝试入门VGG,实现猫狗分类的baseline_第4张图片

为什么要用Xavier做初始化

为什么要resize成(224*224)?是怎么resize的?

为什么每经过一个block,通道数都要(会)翻倍?

5.7. 使用重复元素的网络(VGG) — 《动手学深度学习》 文档

Why VGG-16 takes input size 512 * 7 * 7?

neural network - Why VGG-16 takes input size 512 * 7 * 7? - Stack Overflow

为什么使用2个3x3卷积核可以来代替5*5卷积核?

feature map指的是什么?

理解卷积神经网络CNN中的特征图 feature map_dengheCSDN的博客-CSDN博客

你可能感兴趣的:(pytorch,人工智能,python)