卷积神经网络(CNN)学习笔记
来源:互联网 发布:音乐降调软件中文版 编辑:程序博客网 时间:2024/05/22 02:31
卷积神经网络(CNN)
Keywords:
常用网络:LeNet5 、AlexNet VGGNet、 GoogleNet、 ResNet、DenseNet
filter size
stripe
padding
参数共享机制
fine tuning
输入层、卷积层、激励层、池化层、全连接层、Softmax 输出层
一般CNN结构依次为:
一个CNN 层级结构示意图:
卷积层:一组固定的权重和不同窗口内数据做内积,就是卷积。
激励层:
激励函数:
Sigmoid :
Tanh :
ReLU:
Leaky ReLU:
ELU:指数线性单元,所有ReLU的优点都有,不会挂,输出均值趋于0,但是有指数存在,计算量略大。
Maxout:两条直线拼接,计算是线性,不会饱和不会挂,缺点是增加了参数。
工业上主流用的还是ReLU(或类ReLU)激励层。
池化层(Pooling layer)
pooling:原理是图像具有局部特征不变性,所以可以采用池化操作。
- Max pooling
- Average pooling
Max pooling 示意图
downsampling
全连接层 (Full connect layer):所有神经元之间都有权重连接,试图尽可能将池化下采样中的信息恢复出来。如果一开始都用全连接层,参数太多,训练量太大,无法有效计算。
CNN 训练算法:
CNN 优缺点:
优点:
- 共享卷积核,对高维数据处理无压力;
- 无需手动选取特征,训练好权重,即获得特征
- 分类效果好
缺点:
- 需要调参,需要大样本量,训练最好要GPU
- 物理含义不明确
常见的CNN 框架
LeNet
AlexNet
GoogleNet
VGGNet
ResNet
DenseNet
Fine tuning:
Mini-batch SGD:
不断循环:
- 采样一个batch 数据(如32张图片,可以做镜像对称);
- 前向计算得到损失loss
- 反向传播计算梯度(一个batch上的)
- 用这部分梯度迭代更新权重参数
CNN训练图像数据预处理: 去均值,但是不要做标准化、PCA和白化。
均值是训练集样本数据的均值,训练集和测试集均需要减去训练集样本均值。
权重初始化
权重初始化,不能全部初始化为0。可采用正态随机初始化
W = np.random.randn(m,n)*0.01 # W初始化,m是输入层神经元个数,n是输出层神经元个数
权重
Xavier Initialization:
import numpy as npW = np.random.randn(fan_in,fan_out)/np.sqrt(fan_in)
ReLU activation function:
import numpy as npW = np.random.randn(node_in, node_out) / np.sqrt(node_in / 2)
Batch Normalization Layer (Google 提出)可以有效降低深度网络对weight初始化的依赖,防止“梯度弥散”:
import tensorflow as tf # tensorflow# put this before nonlinear transformationlayer = tf.contrib.layers.batch_norm(layer, center=True, scale=True, is_training=True)
通常在全连接层后,激励层前做。因为全连接层对所有的神经元关联,波动性大。其对激励过后的结果进行约束,使激励后的结果呈现高斯分布。 是对SGD 反向传播训练权重W的约束
Training时
Batch normalization 的好处:
- 梯度传递(计算)更为顺畅;
- 学习率设高一点也没关系;
- 对初始值的依赖减少了!!!
- 这里也可以看作是一种正则化,减少了对Dropout的需求。
- 卷积神经网络(CNN)学习笔记
- 卷积神经网络(CNN)学习笔记
- 卷积神经网络(CNN)学习笔记
- CNN卷积神经网络学习笔记
- CNN卷积神经网络学习笔记
- Deep Learning学习笔记(一):卷积神经网络(CNN)
- Tensorflow深度学习笔记(九)--卷积神经网络(CNN)
- 卷积神经网络(cnn)学习笔记1:入门
- tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
- 深度学习笔记三-CNN(卷积神经网络)是什么?(续)
- 机器学习笔记(四)卷积神经网络CNN
- 深度学习笔记(六) cnn 卷积神经网络
- 卷积神经网络学习笔记(一):CNN概况
- 卷积神经网络学习笔记(二):CNN代码实例
- kaldi学习笔记之卷积神经网络(CNN)
- 卷积神经网络(CNN)笔记
- CNN卷积神经网络笔记
- CNN卷积神经网络-笔记(未完)
- ImageLoader初始化配置
- HDU
- JVectorMap插件使用
- HTML
- python模块学习(threading模块中的Condition类)
- 卷积神经网络(CNN)学习笔记
- Spring依赖注入方式
- Leetcode
- CocoaPods报错
- 苹果6s刷机教程,苹果6s Plus刷机教程
- 杭电ACM OJ 1008 Elevator 其实就是简单的加减法 有点水
- jenkins的安装配置,插件配置,安装插件,配置maven,jdk路径,配置安装插件,项目配置,自动构建配置
- gdb工具常用命令
- [2017纪中11-9]玩游戏 最短路数+LCA