0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何搭建VGG网络实现Mnist数据集的图像分类

jf_78858299 来源:算法与编程之美 作者:算法与编程之美 2023-02-14 15:00 次阅读

1 问题

如何搭建VGG网络,实现Mnist数据集的图像分类?

2 方法

步骤:

首先导包

VGG11由8个卷积,三个全连接组成,注意池化只改变特征图大小,不改变通道数

给定x查看最后结果

x = torch.rand(128,3,224,224)
net = MyNet()
out = net(x)
print(out.shape)
#torch.Size([128, 1000])

class MyNet(nn.Module):
def __init__(self) -> None:
super().__init__()
#(1)conv3-64
self.conv1 = nn.Conv2d(
in_channels=3,
out_channels=64,
kernel_size=3,
stride=1,
padding=1 #! 不改变特征图的大小
)
#! 池化只改变特征图大小,不改变通道数
self.max_pool_1 = nn.MaxPool2d(2)
#(2)conv3-128
self.conv2 = nn.Conv2d(
in_channels=64,
out_channels=128,
kernel_size=3,
stride=1,
padding=1
)
self.max_pool_2 = nn.MaxPool2d(2)
#(3) conv3-256,conv3-256
self.conv3_1 = nn.Conv2d(
in_channels=128,
out_channels=256,
kernel_size=3,
stride=1,
padding=1)
self.conv3_2 = nn.Conv2d(
in_channels=256,
out_channels=256,
kernel_size=3,
stride=1,
padding=1
)
self.max_pool_3 = nn.MaxPool2d(2)
#(4)conv3-512,conv3-512
self.conv4_1 = nn.Conv2d(
in_channels=256,
out_channels=512,
kernel_size=3,
stride=1,
padding=1
)
self.conv4_2 = nn.Conv2d(
in_channels=512,
out_channels=512,
kernel_size=3,
stride=1,
padding=1
)
self.max_pool_4 = nn.MaxPool2d(2)
#(5)conv3-512,conv3-512
self.conv5_1 = nn.Conv2d(
in_channels=512,
out_channels=512,
kernel_size=3,
stride=1,
padding=1
)
self.conv5_2 = nn.Conv2d(
in_channels=512,
out_channels=512,
kernel_size=3,
stride=1,
padding=1
)
self.max_pool_5 = nn.MaxPool2d(2)
#(6)
self.fc1 = nn.Linear(25088,4096)
self.fc2 = nn.Linear(4096,4096)
self.fc3 = nn.Linear(4096,1000)
def forward(self,x):
x = self.conv1(x)
print(x.shape)
x = self.max_pool_1(x)
print(x.shape)
x = self.conv2(x)
print(x.shape)
x = self.max_pool_2(x)
print(x.shape)
x = self.conv3_1(x)
print(x.shape)
x = self.conv3_2(x)
print(x.shape)
x = self.max_pool_3(x)
print(x.shape)
x = self.conv4_1(x)
print(x.shape)
x = self.conv4_2(x)
print(x.shape)
x = self.max_pool_4(x)
print(x.shape)
x = self.conv5_1(x)
print(x.shape)
x = self.conv5_2(x)
print(x.shape)
x = self.max_pool_5(x)
print(x.shape)
x = torch.flatten(x,1)
print(x.shape)
x = self.fc1(x)
print(x.shape)
x = self.fc2(x)
print(x.shape)
out = self.fc3(x)
return out

Import torch
from torch import nn

3 结语

通过本周学习让我学会了VGG11网络,从实验中我遇到的容易出错的地方是卷积的in_features和out_features容易出错,尺寸不对的时候就会报错,在多个卷积的情况下尤其需要注意,第二点容易出错的地方是卷积以及池化所有结束后,一定要使用torch.flatten进行拉伸,第三点容易出错的地方是fc1的in_features,这个我通过使用断点的方法,得到fc1前一步的size值,从而得到in_features的值,从中收获颇深。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据集
    +关注

    关注

    4

    文章

    1179

    浏览量

    24360
  • MNIST
    +关注

    关注

    0

    文章

    10

    浏览量

    3319
  • vgg
    vgg
    +关注

    关注

    1

    文章

    11

    浏览量

    5145
收藏 人收藏

    评论

    相关推荐

    计算机视觉/深度学习领域常用数据汇总

    的,不能直接以图像格式查看,不过很容易找到将其转换成图像格式的工具。最早的深度卷积网络LeNet便是针对此数据的,当前主流深度学习框架几乎
    发表于 08-29 10:36

    干货 | TensorFlow的55个经典案例

    /master/examples/images/dnn.py卷积网络MNIST)。用于分类 MNIST 数据
    发表于 10-09 11:28

    TF之CNN:CNN实现mnist数据预测

    TF之CNN:CNN实现mnist数据预测 96%采用placeholder用法+2层C及其max_pool法+隐藏层dropout法+输出层softmax法+目标函数cross_e
    发表于 12-19 17:02

    使用MXNetFashionMNIST数据分类简洁实现

    [MXNet逐梦之旅]练习四·使用MXNetFashionMNIST数据分类简洁实现
    发表于 05-11 15:21

    图像分类Caltech 256数据

    教程图像分类 Caltech 256​数据
    发表于 05-12 09:04

    使用MXNetFashionMNIST数据分类手动实现

    [MXNet逐梦之旅]练习三·使用MXNetFashionMNIST数据分类手动实现
    发表于 05-14 07:40

    深度学习入门之中根据源代码下载到mnist数据,训练识别率超级低问题

    深度学习入门 中根据源代码下载到mnist数据,训练识别率超级低问题
    发表于 07-08 16:53

    TensorFlow逻辑回归处理MNIST数据

    /get_started/mnist/beginners提供。大部分人已经对 MNIST 数据很熟悉了,它是机器学习的基础,包含手写数字的图像
    发表于 08-11 19:36

    TensorFlow逻辑回归处理MNIST数据

    /get_started/mnist/beginners提供。大部分人已经对 MNIST 数据很熟悉了,它是机器学习的基础,包含手写数字的图像
    发表于 08-11 19:36

    如何用TensorFlow导入MNIST数据

    用TensorFlow导入MNIST数据
    发表于 11-11 07:33

    图像预处理和改进神经网络推理的简要介绍

    为提升识别准确率,采用改进神经网络,通过Mnist数据进行训练。整体处理过程分为两步:图像预处理和改进神经
    发表于 12-23 08:07

    keras制作mnist数据的流程

    第5讲讲解了keras制作mnist数据的流程,进一步的,有时候我们需要构建自己的数据。 以flower
    发表于 08-18 06:38

    如何利用keras打包制作mnist数据

    mnist为例讲述怎么自己制作数据。 1 使用keras内置函数下载数据 import tensorflow as tf impor
    发表于 08-18 06:12

    改进VGG模型在苹果外观识别分类中的应用

    改进VGG模型在苹果外观识别分类中的应用
    发表于 07-02 14:52 30次下载

    如何使用VGG网络进行MNIST图像分类

    VGG网络,可以应用在人脸识别、图像分类等方面。VGG有两种结构,分别为16层和19层。具体结构在其文献做了详细表述
    的头像 发表于 02-17 15:06 650次阅读
    如何使用<b class='flag-5'>VGG</b><b class='flag-5'>网络</b>进行<b class='flag-5'>MNIST</b><b class='flag-5'>图像</b><b class='flag-5'>分类</b>