卷积核和全连接层的区别_「动手学计算机视觉」第十六讲:卷积神经网络之AlexNet...

前言

cbbd9268e540437695db1134037e8ca2.png

前文详细介绍了卷积神经网络的开山之作LeNet,虽然近几年卷积神经网络非常热门,但是在LeNet出现后的十几年里,在目标识别领域卷积神经网络一直被传统目标识别算法(特征提取+分类器)所压制,直到2012年AlexNet(ImageNet Classification with Deep Convolutional

Neural Networks)在ImageNet挑战赛一举夺魁,使得卷积神经网络再次引起人们的重视,并因此而一发不可收拾,卷积神经网络的研究如雨后春笋一般不断涌现,推陈出新。

AlexNet是以它的第一作者Alex Krizhevsky而命名,这篇文章中也有深度学习领域三位大牛之一的Geoffrey Hinton的身影。AlexNet之所以这么有名气,不仅仅是因为获取比赛冠军这么简单。这么多年,目标识别、目标跟踪相关的比赛层出不穷,获得冠军的团队也变得非常庞大,但是反观一下能够像 AlexNet影响力这么大的,却是寥寥可数。

AlexNet相比于上一代的LeNet它首先在数据集上做了很多工作,

第一点:数据集

我们都知道,限制深度学习的两大因素分别输算力和数据集,AlexNet引入了数据增广技术,对图像进行颜色变换、裁剪、翻转等操作。

第二点:激活函数

在激活函数方面它采用ReLU函数代替Sigmoid函数,前面我用一篇文章详细的介绍了不同激活函数的优缺点,如果看过的同学应该清楚,ReLU激活函数不仅在计算方面比Sigmoid更加简单,而且可以克服Sigmoid函数在接近0和1时难以训练的问题。

第三点:Dropout

这也是AlexNet相对于LeNet比较大一点不同之处,AlexNet引入了Dropout用于解决模型训练过程中容易出现过拟合的问题,此后作者还发表几篇文章详细的介绍Dropout算法,它的引入使得卷积神经网络效果大大提升,直到如今Dropout在模型训练过程中依然被广泛使用。

第四点:模型结构

卷积神经网络的每次迭代,模型架构都会发生非常大的变化,卷积核大小、网络层数、跳跃连接等等,这也是不同卷积神经网络模型之间的区别最明显的一点,由于网络模型比较庞大,一言半语无法描述完整,下面我就来详细介绍一下AlexNet的网络模型。

AlexNet

08646b4ece5d66924ce6810bd3189fb9.png

如果读过前面一片文章应该了解,LeNet是一个5层的卷积神经网络模型,它有两个卷积层和3个全连接层。对比而言,AlexNet是一个8层的卷积升级网络模型,它有5个卷积层和3个全连接层。

我们在搭建一个网络模型的过程中,重点应该关注如下几点:

  • 卷积核大小
  • 输入输出通道数
  • 步长
  • 激活函数

关于AlexNet中使用的激活函数前面已经介绍过,它使用的是ReLU激活函数,它5层卷积层除了第一层卷积核为11*11、第二次为5*5之外,其余三层均为3*3,下面就详细介绍一下AlexNet的模型结构,

第一层:卷积层

卷积核大小11*11,输入通道数根据输入图像而定,输出通道数为96,步长为4。

池化层窗口大小为3*3,步长为2。

第二层:卷积层

卷积核大小5*5,输入通道数为96,输出通道数为256,步长为2。

池化层窗口大小为3*3,步长为2。

第三层:卷积层

卷积核大小3*3,输入通道数为256,输出通道数为384,步长为1。

第四层:卷积层

卷积核大小3*3,输入通道数为384,输出通道数为384,步长为1。

第五层:卷积层

卷积核大小3*3,输入通道数为384,输出通道数为256,步长为1。

池化层窗口大小为3*3,步长为2。

第六层:全连接层

输入大小为上一层的输出,输出大小为4096。

Dropout概率为0.5。

第七层:全连接层

输入大小为4096,输出大小为4096。

Dropout概率为0.5。

第八层:全连接层

输入大小为4096,输出大小为分类数。

注意:需要注意一点,5个卷积层中前2个卷积层后面都会紧跟一个池化层,而第3、4层卷积层后面没有池化层,而是连续3、4、5层三个卷积层后才加入一个池化层。

编程实践

61badb9e00f97386ce2e0b26e3c5af72.png

在动手实践LeNet文章中,我介绍了网络搭建的过程,这种方式同样适用于除LeNet之外的其他模型的搭建,我们需要首先完成网络模型的搭建,然后再编写训练、验证函数部分。

在前面一篇文章为了让大家更加容易理解tensorflow的使用,更加清晰的看到网络搭建的过程,因此逐行编码进行模型搭建。但是,我们会发现,同类型的网络层之间很多参数是相同的,例如卷积核大小、输出通道数、变量作用于的名称,我们逐行搭建会有很多代码冗余,我们完全可以把这些通用参数作为传入参数提炼出来。因此,本文编程实践中会侧重于代码规范,提高代码的可读性。

编程实践中主要根据tensorflow接口的不同之处把网络架构分为如下4个模块:

  • 卷积层
  • 池化层
  • 全连接层
  • Dropout

卷积层

针对卷积层,我们把输入、卷积核大小、输入通道数、步长、变量作用域作为入参,我们使用tensorflow时会发现,我们同样需要知道输入数据的通道数,关于这个变量,我们可以通过获取输入数据的尺寸获得,

def conv_layer(self, X, ksize, out_filters, stride, name): in_filters = int(X.get_shape()[-1]) with tf.variable_scope(name) as scope: weight = tf.get_variable("weight

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vnc配置备忘录

因为我开发板上要用到Qt,所以我在服务器上安装了Qt的开发环境,为了能远程连接到服务器我安装了VNC, 中间也是遇到了很多问题,比如连接上去后,只显示一个控制台的窗口,只能使用命令行。后来几经周折才搞定先…

编程挑战:字符串的完美度

题目详情我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。 现在给…

网络编程知识预备(5) ——libcurl库安装及其编程访问百度首页

本文为学习笔记,整合课程内容以及下列文章: 其中,libcurl函数库常用字段解读部分: 参考博文:原文地址 作者:冬冬他哥哥 目录Libcurl库简介Libcurl等三方库的通用编译方法三方库使用前通读方法库的配置、编…

JSP(Servlet)中从连接池获取连接

1) 建立连接。 2) 执行SQL。 3) 处理结果。 4) 释放资源。 Connection pool:连接池 DataSource: LDAP ( Light directory access protocal )轻量级目录访问协议。 JNDI ( java naming director interface ) Java 命名目录接口。 使用连接池: …

文件系统模拟程序python_如何使用sh实现Python虚拟文件系统

我已经建立了一个模拟操作系统的Python脚本。它有一个命令提示符和一个虚拟文件系统。我使用shelve模块来模拟文件系统,它是多维的,以便支持目录的层次结构。但是,我在执行“cd”命令时遇到问题。我不知道如何进出目录,即使我有一…

udhcpd配置及使用

udhcpd配置及使用 1. 修改/etc/udhcpd.conf 修改 interface ra0 #default: eth0 为对应网卡 解决error, Unable to open /var/lib/misc/udhcpd.leases for reading, 在板子上执行以下命令: # mkdir -p /var/lib/misc/ # touch /var/lib/misc/udhcp…

智能家居 (9) ——人脸识别摄像头安装实现监控功能

目录摄像头模块安装安装mjpg-streamer库开启监控功能往期文章摄像头模块安装 注意:安装要下电安装,不能带电!连接其他硬件模块的时候也是。 安装mjpg-streamer库 树莓派利用pi Camera模块,通过mjpg-streamer软件获取视频&#xf…

清理localstorage_vue 界面刷新数据被清除 localStorage的使用详解

localStorage是html5新增的一个本地存储API,它有5M的大小空间,通过(key,value)的方式存储在浏览器中window.localStorage.setItem(key, value); //储存文件window.localStorage.getItem(key); //读取文件window.localStorage.removeItem(key); //清除文件vue中使用方法&#xf…

洛谷p2234/BZOJ1588 [HNOI2002]营业额统计

题目链接:洛谷BZOJ 分析: 好像没有什么好说的就是一个平衡树的板子……唯一要注意的就是这里要找的并不是严格的前驱和后继,因为如果找到之前某一天的营业额和它相等那么差就是0,所以我们仍然在结构体中开一个域cnt来存储同一个元…

WSDL中文版——详解

为什么使用WSDL? 像Internet协议之类的标准有没有为权威所利用,或者人们这样看待它是因为顺之所获的好处远远超出了代价?曾经有许多试图建立的标准都流产了。有时候,那些还没有普遍使用的标准甚至由法令或政府规定强行推出:Ada语…

设备树和pinctrl粗解

上次文章中 我以DS18b20为例,在设备树中定义了ds18b20的资源(device),当时是依葫芦画瓢,没有深入探究,本文主要探讨下pin在设备树中的描述 参考文章:Linux内核中的GPIO系统之(3&…

八大排序算法(C语言实现)

摘自:八大排序算法(C语言实现) 作者:2021dragon 发布时间: 2021-05-16 10:46:37 网址:https://blog.csdn.net/chenlong_cxy/article/details/116563972 目录 直接插入排序希尔排序选择排序堆排序冒泡排序快…

python qq签到_Yii Framework 中文网每天签到 Python 脚本

Yii 春节前的重磅新闻:Yii 2.0.16 版本发布了经过国内 Yii 使用者坚持不懈的进行国际化翻译,以及在中国进行大量的宣传和推广,Yii China 目前已经成为全球最大的 Yii 中文社区也就是 Yii Framework 中文网,地址为 www.yiichina.co…

codeforces 1060 A

https://codeforces.com/contest/1060/problem/A 题意&#xff1a;电话号码是以8开头的11位数&#xff0c;给你n 个数问最多可以有多少个电话号码 题解&#xff1a;min&#xff08;8的个数&#xff0c;n/11&#xff09; 代码如下&#xff1a; #include <map> #include &l…

嵌入式linux 自动获取IP 及 自动校时

最近要调用百度人脸识别API做个东西&#xff0c;发现百度API在桌面端QT程序跑的贼溜&#xff0c;可以到了嵌入式板子上发现就post没了返回信息。 一、嵌入式端udhcpc自动获取IP 1.在开发板建立文件夹#mkdir /usr/share/udhcpc/ -p 2.先拷贝busybox 源码目录下的 busybox-1.27…

MYSQL MVCC实现及其机制

多版本并发控制 Multiversion Concurrency Control 大部分的MySQL的存储 引擎&#xff0c;比如InnoDB&#xff0c;Falcon&#xff0c;以及PBXT并不是简简单单的使用行锁机制。它们都使用了行锁结合一种提高并发的技术&#xff0c;被称为MVCC&#xff08;多版本并 发控制&#x…

树莓派外设开发之控制继电器(组)

目录控制继电器控制继电器组控制继电器 选择7号引脚作为继电器信号输出控制端。 代码&#xff1a; #include <wiringPi.h> #include <stdio.h> #define SWITCHER 7 // 7为树莓派物理引脚编码和wiringPi编码。在树莓派功能名为GPIO.7int main() {int cmd;if( wiri…

piovt table python_python – Pandas:pivot和pivot_table之间的区别...

我有以下数据帧.df.head(30)struct_id resNum score_type_name score_value0 4294967297 1 omega 0.0648401 4294967297 1 fa_dun 2.1856182 4294967297 1 fa_dun_dev 0.0000273 4294967297 1 fa_dun_semi 2.1855914 4294967297 1 ref -1.1911805 4294967297 2 rama -0.7951616…

读《系统虚拟化-原理与实现》-第一章

一、虚拟化的实现: 在系统中加入一个虚拟化层&#xff0c;虚拟化层将下层资源抽象成另一形式的资源&#xff0c;提供给上层使用 1. 是虚拟化迁移的基础 2. 提高了移植性 二、几种虚拟化 1.硬件抽象层上的虚拟化 通过虚拟硬件抽象层来实现虚拟机 2.操作系统层上的虚拟化 操…

怎样查看电脑开机记录

在Windows XP中&#xff0c;我们可以通过“事件查看器”的事件日志服务查看计算机的开、关机时间。因为事件日志服务会随计算机一起启动和关闭&#xff0c;并在事件日志中留下记录。 在这里有必要介绍两个ID号&#xff1a;6006和6005。在事件查看器里ID号为6006的事件表示事件日…