学习基于pytorch的VGG图像分类 day1

本文详细介绍了VGG网络的结构,包括5层卷积层、3层全连接层和1层softmax层,重点讲解了卷积、液化(池化)、Featuremap和ReLU函数的概念及其优点,以及它们在深度学习中的应用。
摘要由CSDN通过智能技术生成

注:本系列博客在于汇总CSDN的精华帖,类似自用笔记,不做学习交流,方便以后的复习回顾,博文中的引用都注明出处,并点赞收藏原博主.

目录

一.VGG

(1)对VGG网络的初步认知

        VGG网络结构

        1.卷积层

        2.全连接层

        3.softmax层

(2)对各个名词的认知

        1.卷积

        2.液化

        3.Feature map

        4.ReLU函数

        ReLU的优点

        4.1. 计算简单性

        4.2. 代表性稀疏

        4.3. 线性行为

        4.4. 训练深度网络

     小结


一.VGG

(1)对VGG网络的初步认知

        VGG网络结构

        VGG由5层卷积层、3层全连接层、1层softmax输出层构成,层与层之间使用maxpool(最大化池)分开,所有隐藏层的激活单元都采用ReLU函数。

        在实际使用过程中,一般都会采用16层:13个卷积层以及最后3个全连接层。

         

        1.卷积层

        卷积层(convolution layer)是卷积神经网络中的基础操作,卷积运算实际是分析数学中的一种运算方式,在卷积神经网络中通常是仅涉及离散卷积的情形。

        

         三维输入时卷积操作实际只是将二维卷积扩展到了对应位置的所有通道上,最终将一次卷积处理的所有HWDl 个元素求和作为该位置卷积结果。

        内容及图片来源:卷积层-CSDN博客

        2.全连接层

        全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”.

        假设你是一只小蚂蚁,你的任务是找小面包。你的视野还比较窄,只能看到很小一片区域。当你找到一片小面包之后,你不知道你找到的是不是全部的小面包,所以你们全部的蚂蚁开了个会,把所有的小面包都拿出来分享了。全连接层就是这个蚂蚁大会~

        那它是怎么样把3x3x5的输出,转换成1x4096的形式?很简单,可以理解为在中间做了一个卷积。

内容及图片来源: 全连接层详解-CSDN博客

        3.softmax层

        softmax将输出的分类结果映射到(0-1)之间,将神经网络的分类结果转化成对应的概率。不同的概率,表示此样本属于对应类别的可能性大小,概率越大,样本属于该分类的可能性越大。概率的总和为1。

        softmax位于网络输出层的后边,其在网络结构中的位置如下图所示:

         和隐藏层神经元计算类似,softmax层对输出数据先进行线性运算,再使用softmax激活函数将输出转化为概率。

内容及图片来源: 神经网络之softmax(作用,工作原理【示例说明】,损失计算)_softmax层-CSDN博客

 图片来源:Pytorch之VGG16图像分类_vgg16能处理不同大小的图片吗-CSDN博客

(2)对各个名词的认知

         1.卷积

        卷积的重要的物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。通俗的说: 在输入信号的每个位置,叠加一个单位响应,就得到了输出信号。

内容参考来源:卷积(convolution)最容易理解的解释-CSDN博客

        2.液化

        池化与卷积的共同点:池化操作也是原图像矩阵(或特征图矩阵)与一个固定形状的窗口(核、或者叫算子)进行计算,并输出特征图的一种计算方式;

        池化与卷积的不同点:卷积操作的卷积核是有数据(权重)的,而池化直接计算池化窗口内的原始数据,这个计算过程可以是选择最大值、选择最小值或计算平均值,分别对应:最大池化、最小池化和平均池化。由于在实际使用中最大池化是应用最广泛的池化方法,以下讲述均针对于最大池化进行说明,平均池化和最小池化也是同样的作用原理。

 Pytorch源码

import torch
from PIL import Image
import torchvision
 
 
image = Image.open('spaceship.png').convert('RGB') #导入图片
image_to_tensor = torchvision.transforms.ToTensor()   #实例化ToTensor
original_image_tensor = image_to_tensor(image).unsqueeze(0)     #把图片转换成tensor
 
print(original_image_tensor.size())
 
maxpool = torch.nn.MaxPool2d(kernel_size=6, stride=2, padding=0)
maxpool_tensor = maxpool(original_image_tensor)
 
torchvision.utils.save_image(maxpool_tensor, 'maxpool.png')
print(maxpool_tensor.size())

图片及内容参考:Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)-CSDN博客

        3.Feature map

        在每个卷积层,数据都是以三维形式存在,可以看作许多个二维图像叠在一起,每一层称为feature map。

  • Feature = 二维图像*N = W*H*C=长*宽*通道
    • 灰度图像:1通道,一个feature map
    • 彩色图像:3通道RGB,三个feature map

        卷积网络在学习过程中保持了图像的空间结构,也就是说最后一层的激活值(feature map)总和原始图像具有空间上的对应关系,具体对应的位置以及大小,可以用感受野来度量。

图片及内容参考:卷积神经网络CNN/Pytorch,如何理解特征图Feature map?-CSDN博客

        4.ReLU函数

        在神经网络中,激活函数负责将来自节点的加权输入转换为该输入的节点或输出的激活。ReLU 是一个分段线性函数,如果输入为正,它将直接输出,否则,它将输出为零。它已经成为许多类型神经网络的默认激活函数,因为使用它的模型更容易训练,并且通常能够获得更好的性能。

        ReLU的优点

        4.1. 计算简单性

        tanh 和 sigmoid 激活函数需要使用指数计算, 而ReLU只需要max(),因此他计算上更简单,计算成本也更低 。

        4.2. 代表性稀疏

        ReLU的一个重要好处是,它能够输出一个真正的零值 。这与 tanh 和 sigmoid 激活函数不同,后者学习近似于零输出,例如一个非常接近于零的值,但不是真正的零值。这意味着负输入可以输出真零值,允许神经网络中的隐层激活包含一个或多个真零值。这就是所谓的稀疏表示,是一个理想的性质,在表示学习,因为它可以加速学习和简化模型。

        4.3. 线性行为


        ReLU看起来更像一个线性函数,一般来说,当神经网络的行为是线性或接近线性时,它更容易优化 。这个特性的关键在于,使用这个激活函数进行训练的网络几乎完全避免了梯度消失的问题,因为梯度仍然与节点激活成正比。

        4.4. 训练深度网络


        ReLU的出现使得利用硬件的提升和使用反向传播成功训练具有非线性激活函数的深层多层网络成为可能 。

     小结

                1.卷积即是对数据的加权叠加处理,对输入信号处理后得出输出信号.

                2.液化即使无权值的数据处理,是矩阵处理计算,是直接对原始数据计算.

                3.feature map即是特征图,以三维形式存在,可以看作多个二维图像叠加,每一层即是feature map.计算为=长 x 宽 x 通道数

                4.ReLU函数是激活函数,处理数据更好训练模型.

  • 46
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于PyTorch图像分类算法是一种利用深度学习框架PyTorch来实现图像分类任务的算法。 PyTorch 是一个开源的机器学习框架,旨在为研究人员和开发者提供灵活且直观的深度学习工具。它使用动态计算图的方式来构建神经网络模型,使得模型的构建和调试更加灵活和高效。PyTorch 的设计理念是"Define by Run",即通过运行来定义模型的计算图结构,这与其他框架如TensorFlow的"Define and Run"不同,使得模型构建更加直观简洁。 图像分类是计算机视觉中的一项重要任务,其目标是将输入的图像分为不同的类别。基于PyTorch图像分类算法通常涉及以下几个步骤: 1. 数据预处理:将输入的图像进行预处理,包括图像的缩放、剪裁、增强等操作。这些操作可以通过PyTorch中的transforms模块来实现。 2. 构建模型:使用PyTorch定义深度学习模型,通常包括卷积神经网络(Convolutional Neural Network, CNN)的搭建。PyTorch提供了丰富的模型组件和层,可以根据需求来自定义模型结构。 3. 模型训练:通过定义损失函数和优化算法,对模型进行训练。PyTorch提供了各种损失函数和优化算法的实现,如交叉熵损失函数和随机梯度下降优化算法。 4. 模型评估:使用训练好的模型对测试集进行预测,计算预测结果与真实标签之间的准确率等指标来评估模型的性能。 5. 模型优化:根据评估结果进行模型优化,可以通过调整超参数、改变模型结构等方式来提高分类性能。 总之,基于PyTorch图像分类算法提供了一个灵活和高效的深度学习工具,使得图像分类任务的实现更加简单和便捷。通过使用PyTorch的模块和函数,可以快速搭建和训练一个功能强大的图像分类模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值