解释一下全连接层CNN中全连接层是什么样的
(名称:全连接。意思就是输出层的神经元和输入层的每个神经元都连接)
在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,这是怎么来的呢?目的何在呢?
举个例子:
最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12*12的图像,然后通过了一个全连接层变成了1*100的向量。
这是怎么做到的呢,其实就是有20*100个12*12的卷积核卷积出来的,对于输入的每一张图,用了一个和图像一样大小的核卷积,这样整幅图就变成了一个数了,如果厚度是20就是那20个核卷积完了之后相加求和。这样就能把一张图高度浓缩成一个数了。
全连接的目的是什么呢?因为传统的网络我们的输出都是分类,也就是几个类别的概率甚至就是一个数--类别号,那么全连接层就是高度提纯的特征了,方便交给最后的分类器或者回归。
但是全连接的参数实在是太多了,你想这张图里就有20*12*12*100个参数,前面随便一层卷积,假设卷积核是7*7的,厚度是64,那也才7*7*64,所以现在的趋势是尽量避免全连接,目前主流的一个方法是全局平均值。
也就是最后那一层的feature map(最后一层卷积的输出结果),直接求平均值。有多少种分类就训练多少层,这十个数字就是对应的概率或者叫置信度。
---------------------------------------------------------------------
CNN中全连接层是什么样的?
名称:全连接。意思就是输出层的神经元和输入层的每个神经元都连接。
例子: AlexNet 网络中第一个全连接层是这样的:
layer {
name: "fc6"
type: "InnerProduct"
bottom: "pool5"
top:"fc6"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 4096
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
value: 0.1
}
}
}
其中 bottom: "pool5"就是这个全连接层的输入,而top:"fc6"就是这个全连接层的输出。值得注意的地方是这个bottom: "pool5"是个“二维平面“式的数据,也就是N X M的数组样式,但是top:"fc6"确是一个K X 1或者 1 X K的向量,因此在实现中,程序会将bottom: "pool5"拉成N*M X 1或者1 X M*N的向量。
这个输入向量是什么呢?对,是特征图,符号化就是X(1)、X(2)、X(3)...X(N*M),括号内是X的下标。
那么输出呢?如果这个全连接层不是最后一个全连接层那么它也是特征图,符号化就是Y(1)、Y(2)、Y(3)...Y(K),括号内是Y的下标。
那么输入和输出是怎么联系到一块呢?答案就是W权重了,也叫滤波器,也叫卷积核。
那么在全连接层里怎么没看到这个滤波器的大小呢?答案是:不需要,因为它就是全连接啊。
一般情况下,输入神经元的个数不等于输出神经元的个数,那数目不等的输入输出神经元怎么连接起来呢?还有,这个滤波器(卷积核)是什么样呢?可以看看下面例子:
其中(X1,X2,X3)就是输入神经元(特征图),而(Y1Y2)就是输出神经元(特征图),两层之间的连接就是卷积核:,想想矩阵相乘,就明白1X3的“矩阵”怎么变成1X2的矩阵了。
总的下来就是:,
这个卷积核的形状是在代码中自动计算出来的。
解释一下全连接层CNN中全连接层是什么样的相关推荐
- CNN中全连接层是什么样的
名称:全连接.意思就是输出层的神经元和输入层的每个神经元都连接. 例子: AlexNet 网络中第一个全连接层是这样的: layer { name: "fc6" type ...
- java 关闭oracle连接_Java应用中Oracle连接不关闭
在一些不使用连接池的较老的Java Web应用程序中,我有一个连接泄漏. 查找泄漏很困难,因为它不会授予我访问v$session的权限 SELECT Count(*) FROM v$session; ...
- mysql 函数多个连接_MySQL数据库中如何连接两个或多个字符串呢?
摘要: 下文讲述MySQL数据库中组合字符串的方法分享,如下所示: 实现思路: 使用系统函数CONCAT即可实现两个或多个字符串的组合连接 注意事项: 当组合字符串中,任意一个字符为NULL时,则返回 ...
- vs2015如何连接oracle,VS2015中C#连接Oracle数据库
硬件环境:Win10 64位+ VS2015 + ODP.Net for VS2015 配置ODP.Net Oracle Developer Tools for Visual Studio 12.1. ...
- java连接查询where_SQL中join连接查询时条件放在on后与where后的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...
- ice 服务java连接,java - ICE中的连接计数 - 堆栈内存溢出
是的,您应该这样做. 每个通信器都创建两个线程池: 客户端线程池为传出连接提供服务,这主要涉及处理传出请求的回复,并包括通知AMI回调对象. 如果在双向模式下使用连接,则客户端线程池还将调度传入的回调 ...
- 对于全连接层的理解 全连接层的推导
全连接层的推导 全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来.由于其全相连的特性,一般全连接层的参数也是最多的. 全连接层的前向计算 下图中连线最密集的2个地方就是全连 ...
- python cnn_Python · CNN(一)· 层结构
(这里是最终成品的 GitHub 地址) (这里是本章用到的 GitHub 地址) ========== 写在前面的话 ========== 其实在 4 个月之前我写过一篇叫"Python ...
- mysql长连接_mysql.connector 数据库长连接
最近python服务经常报连接不存在,后来发现原来的同事写的是缓存来存储连接对象,过期就关闭重连,可是有其他线程还在用该连接,于是就出现了连接不存在的错误,于是改进一下: 连接数据库时查看连接对象是否 ...
最新文章
- MATLAB实战系列(三十八)-基于K-means聚类算法的MATLAB图像分割
- java多线程优先级的方法_Java多线程以及线程优先级
- ffmpeg 常用基本命令和ffmpeg处理RTMP流媒体的常用命令
- qtabwidget设置tab高度_VC|富文本编辑框CRichEditCtrl的字体与段落设置
- linux下单点故障的软件,KeepAlived防止单点故障
- zipkin 自定义采样率_分组,采样和批处理– Java 8中的自定义收集器
- Leetcode--144. 二叉树的前序遍历(迭代递归)
- 深度学习在商户挂牌语义理解的实践
- LCD中调色板的概念
- java中什么是继承,和继承的接口的关系?
- 笔录软件在linux系统,weblogic的在redhat linux下使用笔录
- 70部MAYA灯光材质渲染教程合集
- 全网通工业无线路由器多网口工业路由器
- python面试题搜集
- 苹果 iOS/iPadOS 14.4 beta 2新功能
- C++实现简单的停车场管理系统
- 菜圈的codewars(一),codewars的注册
- 深入浅出LDA(1)
- android opencv颜色识别,opencv学习(2)-简单颜色识别并跟踪
- OpenGL基础(三):三角形