本篇介绍卷积层的线性部分

一、与全连接层相比卷积层有什么优势

卷积层可以节省参数,因为卷积运算利用了图像的局部相关性——分析出一小片区域的特点,加上Pooling层(汇集、汇聚),从附近的卷积结果中再采样选择一些高价值的信息,让特征向少而精的方向前进。

全连接层相当于考虑全局(整张图像)的特征

二、卷积的另一种解释

傅里叶变换:将数据从空间域的展示形式转变到频率域的形式。

理解:图像比作一道做好的菜,傅里叶变换就是找出这道菜具体 的配料及各种配料的用量。

图像中,低频信息是大体轮廓(整体),高频信息是图中物体的纹理特征

若A, B是矩阵,下面两式是等价的

C=conv2(A, B)

C=IFFT(FFT(A) * FFT(B))   #这里*是“元素级别的乘法”

卷积核做傅里叶变换,可以看出高/低频信号的强度,

由于最终要进行元素级的乘法,如果卷积核在某个频率的数值比较低,经过乘法后的输入数据在这个频率的数据也会变小。滤波核在某个频率的数值为0,说明卷积算法计算后会舍弃这部分信息。

Gabor Filter,保留高频舍弃低频,一些文章宣称自己的模型第一层的参数像Gabor Filter。

所以,从傅里叶变换来看,卷积层的意义——

分离低频和高频信息,使它们能够被分别处理。

三、卷积层的反向传播

计算参数:

1卷积层输入图像(数据)X对目标函数的偏导数

2卷积层线性部分参数W对目标函数的偏导数

解法

A:按卷积定义求解,需要计算:

1前向计算图

2下层Loss

3本层w导数

B:转换后的解法,软件库中常用套路

将卷积运算转换为矩阵和向量的点积——

输入数据被转换成了一个size更大的矩阵(为了适应矩阵式的卷积操作有些元素需要重复出现)

卷积核被转换成了一个向量

软件库选择矩阵式解法的原因:矩阵乘法运算经过多年的研究,运算效率非常有保障。按定义的卷积运算性能较差。

CNN卷积层基础:特征提取+卷积核+反向传播的更多相关文章

  1. CNN卷积层:ReLU函数

    卷积层的非线性部分 一.ReLU定义 ReLU:全称 Rectified Linear Units)激活函数 定义 def relu(x): return x if x >0 else 0 #S ...

  2. Deep Learning基础--随时间反向传播 (BackPropagation Through Time,BPTT)推导

    1. 随时间反向传播BPTT(BackPropagation Through Time, BPTT) RNN(循环神经网络)是一种具有长时记忆能力的神经网络模型,被广泛用于序列标注问题.一个典型的RN ...

  3. Tensorflow之CNN卷积层池化层padding规则

    padding的规则 ·        padding=‘VALID’时,输出的宽度和高度的计算公式(下图gif为例) 输出宽度:output_width = (in_width-filter_wid ...

  4. CNN 卷积层输入Map大小计算

    对于输出的size计算: out_height=((input_height - filter_height + padding_top+padding_bottom)/stride_height ) ...

  5. CNN中卷积层 池化层反向传播

    参考:https://blog.csdn.net/kyang624823/article/details/78633897 卷积层 池化层反向传播: 1,CNN的前向传播 a)对于卷积层,卷积核与输入 ...

  6. 卷积神经网络(CNN)反向传播算法

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

  7. 2. CNN卷积网络-前向传播算法

    1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 我们已经了解了CNN的结构,CNN主要结构有输入层,一些卷积层和池化层,后面是DNN全连接层 ...

  8. 卷积神经网络基础(CNN)【转载】

    作者: Sanjay Chan [ http://blog.csdn.net/chenzomi ] 背景 之前在网上搜索了好多好多关于CNN的文章,由于网络上的文章很多断章取义或者描述不清晰,看了很多 ...

  9. CNN中卷积层的计算细节

    原文链接: https://zhuanlan.zhihu.com/p/29119239 卷积层尺寸的计算原理 输入矩阵格式:四个维度,依次为:样本数.图像高度.图像宽度.图像通道数 输出矩阵格式:与输 ...

随机推荐

  1. sql server 用户创建与权限管理

    要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:一.获得准许连接 SQL Server 服务器的权利: 二.获得访问特定数据库中数据的权利(select, update, ...

  2. 利用pandas将numpy数组导出生成excel

    代码 # -*- coding: utf- -*- """ Created on Sun Jun :: @author: Bruce Lau ""&q ...

  3. Mongo导出mongoexport和导入mongoimport介绍

    最近爬取mobike和ofo单车数据,需要存储在csv文件中,因为设计的程序没有写存储csv文件的方法,为了偷懒所以就继续存储到了MongoDB中.恰好MongoDB支持导出的数据可以是csv文件和j ...

  4. SmartGit 授权Non-Commerical

    Window: %APPDATA%/syntevo/SmartGit/ 搜索settings.xml, 并且移除这个文件 重启

  5. GBT27930-2015电动汽车非车载传导式充电机与电池管理系统之间的通信协议

    本标准规定了电动汽车非车载传导式充电机(简称充电机)与电池管理系统(Battery Management System,简称BMS)之间基于控制器局域网(Control Area NetWork,简称 ...

  6. 阅读<Video Timing Controller>笔记

    阅读<Video Timing Controller>笔记   1.Video Timing Controller Block Diagram 2.Example Video Timing ...

  7. Docker-compose ports和expose的区别

    docker-compose中有两种方式可以暴露容器的端口:ports和expose. 1 ports ports暴露容器端口到主机的任意端口或指定端口,用法: ports: - "80:8 ...

  8. 修改docker容器的端口映射

    大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...

  9. win7 上运行 php7 +

    win7 安装 php7+ 很简单, 这里不赘述 如何在phpstudy 添加   php7   百度也很容易找到. 但是在 php 7 运行的时候总是报0x0000007  或者 缺少 .dll 文 ...

  10. centos 磁盘清理 /dev/vda1系统盘满了

    df   -h   检查一台服务器磁盘使用空间,发现磁盘已经使用了100% 思路是: 1.cd /usr   当然这里不一定是/usr目录,最好是cd到 根目录再执行下一步 2.du -sh * 看哪 ...