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

    文章

    1205

    浏览量

    24635
  • MNIST
    +关注

    关注

    0

    文章

    10

    浏览量

    3361
  • vgg
    vgg
    +关注

    关注

    1

    文章

    11

    浏览量

    5185
收藏 人收藏

    评论

    相关推荐

    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

    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

    如何使用神经网络模型加速图像数据分类

    通过图像分类示例,了解Xilinx FPGA如何加速机器学习,这是关键的数据中心工作负载。 该演示使用Alexnet神经网络模型加速了ImageNet
    的头像 发表于 11-21 06:08 2455次阅读

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

    VGG网络,可以应用在人脸识别、图像分类等方面。VGG有两种结构,分别为16层和19层。具体结构在其文献做了详细表述
    的头像 发表于 02-17 15:06 885次阅读
    如何使用<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>

    简述PyTorch中mnist的transforms图像处理

    MNIST数据是一个公开的数据,相当于深度学习的hello world,用来检验一个模型/库/框架是否有效的一个评价指标。
    的头像 发表于 02-24 10:43 526次阅读
    简述PyTorch中<b class='flag-5'>mnist</b>的transforms<b class='flag-5'>图像</b>处理

    PyTorch教程4.2之图像分类数据

    电子发烧友网站提供《PyTorch教程4.2之图像分类数据.pdf》资料免费下载
    发表于 06-05 15:41 0次下载
    PyTorch教程4.2之<b class='flag-5'>图像</b><b class='flag-5'>分类</b><b class='flag-5'>数据</b><b class='flag-5'>集</b>

    PyTorch教程-4.2. 图像分类数据

    SageMaker Studio Lab 中打开笔记本 广泛用于图像分类数据之一是手写数字的MNIST
    的头像 发表于 06-05 15:38 588次阅读
    PyTorch教程-4.2. <b class='flag-5'>图像</b><b class='flag-5'>分类</b><b class='flag-5'>数据</b><b class='flag-5'>集</b>