卷积核和全连接层的区别_「动手学计算机视觉」第十六讲:卷积神经网络之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, 中间也是遇到了很多问题,比如连接上去后,只显示一个控制台的窗口,只能使用命令行。后来几经周折才搞定先…

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

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

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

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

设备树和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 目录 直接插入排序希尔排序选择排序堆排序冒泡排序快…

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…

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

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

[BZOJ2725/Violet 6]故乡的梦

Description Input Output Sample Input 6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6 3 1 6 4 1 2 1 3 4 3 6 5 Sample Output 7 6 Infinity 7 HINT 其实这题和[TJOI2012]桥基本差不多&#xff0c;如果不是最短路径上的边&#xff0c;那直接输出最短路即可。否则就按照[TJOI2…

智能家居 (3) ——智能家居工厂模式介绍实现继电器控制灯

目录智能家居工厂模式整体设计框架继电器控制灯代码contrlEquipments.h 文件&#xff08;设备类&#xff09;mainPro.c 文件&#xff08;主函数&#xff09;bathroomLight.c 文件&#xff08;浴室灯&#xff09;secondfloorLight.c 文件&#xff08;二楼灯&#xff09;livingro…

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

x86构架及操作系统概述 x86内存构架 地址空间和地址 物理地址空间&#xff1a;内存和其他硬件资源组合到一起&#xff0c;分布在CPU的物理地址空间内&#xff0c;CPU使用物理地址索引这些资源 线性地址空间&#xff1a;一个平台只有一个物理地址空间&#xff0c;但每个程序都…

智能家居 (4) ——工厂模式火焰报警

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

智能家居 (5) —— LD3320语音模块二次开发

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

linux命令整理

1. mkdir ##创建目录 命令 【参数】 路径文件 参数&#xff1a; mkdir -p ##递归创建 mkdir -v ##显示创建目录的过程 示例&#xff1a; [rootXM ~]# mkdir /data [rootXM ~]# mkdir -pv test/{1..3}/{4..6} ##同时创建多个目录及子目录 mkdir: created di…

eclipse搭建SSH框架详解

2019独角兽企业重金招聘Python工程师标准>>> SSH框架是最常用的框架之一&#xff0c;在搭建SSH框架的时候总有人遇到这样&#xff0c;那样的问题。下面我介绍一下SSH框架搭建的全过程。 第一步&#xff1a;准备工作。 下载好eclipse,Struts2,Spring,Hibernate。…

龙芯派启用串口3-5

硬件平台&#xff1a;龙芯派二代 内核版本&#xff1a;linux-3.10 这几天在龙芯派上加了一个无线串口&#xff0c;决定采用串口3来连接串口&#xff0c;在龙芯派上执行 #ls /dev/ttyS* 发现只有ttyS0&#xff0c;查看设备树后发现其他串口的设备树节点都是有的&#xff0c…

智能家居 (7) ——网络服务器线程控制

目录网络线程控制代码inputCommand.hmainPro.csocketControl.c代码测试往期文章网络线程控制代码 inputCommand.h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wiringPi.h> #include <wiringSerial.h> #include &l…

龙芯3A4000 VNC配置

安装 yum install tigervnc-server -y 拷贝配置文件 cp /lib/systemd/system/vncserver\.service /lib/systemd/system/vncserver:1.service修改配置文件 vim /lib/systemd/system/vncserver:1.service替换< USER>为用户名 配置、启动vnc systemctl enable vncs…

智能家居 (6) ——语音识别线程控制

目录语音识别线程控制代码inputCommand.hmainPro.cvoiceControl.c代码测试往期文章语音识别线程控制代码 inputCommand.h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wiringPi.h> #include <wiringSerial.h>struc…

MIPS结构体传参

本文讲解了C语言运行在MIPS体系中结构体传参的情况 硬件平台&#xff1a;Loongson 3A3000 系统&#xff1a;uos 在《see MIPS run》中11.2.5中描述到&#xff0c;会将结构体成员压缩到各个arg寄存器中进行传递 “we have to pack the register with data to mimic the arran…