美文网首页
CS231N 学习笔记 Lecture 5&6 CNN及训练神经

CS231N 学习笔记 Lecture 5&6 CNN及训练神经

作者: best___me | 来源:发表于2018-01-08 10:33 被阅读0次

    Lecture5:CNN

    1. 卷积层:

    卷积核的深度与原图相同

    卷积层:感觉这里写错了,应该是6个5x5x3的卷积核

    使用的激活函数:ReLU,多层卷积

    第一层卷积是获取低级特征,例如边界;之后的mid-level获取更复杂的功能,例如拐点和斑点;之后的卷积层获取高级特征。

    卷积之后的大小

    N是输入,F是filter,stride是步长

    padding:原因---保持与以前相同的输入大小

    使用0去填充图片的边界

    卷积层的总结:

     biases的个数和卷积核的总数相同

    2. Pooling Layer

    使得representation更小,更容易管理,分别处理每个activation map。深度不受影响

    max pooling:

    下采样:对于一个样值序列间隔几个样值取样一次,这样得到新序列就是原序列的下采样。

    不使用zero padding

    常用设置:

    3.  全联接层

    拉伸成一个向量

    常见结构:

    Lecture 6:训练神经网络1

    随机梯度下降

    1. 激活函数:

    1) sigmoid

    sigmoid:输出为0到1之间   作为“firing rate”。问题:1)饱和神经元“杀死”梯度(例如x为10或-10时),2)不是zero-centored 3)计算困难

    sigmoid函数的优缺点 希望输入数据是平均值是zero

    2)tanh

    tanh的优缺点

    3)ReLU

    不会饱和,计算方便,更快收敛,与sigmiod的计算很接近。 -10 梯度为0,0的梯度也为0

    ReLU的优点缺点

    可能有些权重不会更新

    4)Leaky ReLU

    5)ELU

    6) Maxout

    实际使用建议:

    2. Data Preprocessing

    1)zero-mean  2)Normarlize规范化

    协方差矩阵是一个单位矩阵

    训练过程和测试过程使用同样的数据预处理

    3. Weight Initialization

    W初始化为0,没有gradient传播,因为隐层节点之后的所有数值均为0。非常不可取,永远不要用。

    方法1: small random numbers

    small random numbers

    对于更深层的网络:all activations become zero

    如果将W设置为1而不是0.01,那么很容易饱和

    一种好的初始化方法:

    使用linear activations

    然而当使用ReLU时会出现问题,

    解决ReLU这个问题的方法:

    关于初始化的相关论文:

    4. Batch Normalization

    计算该批次内的均值和方差

    通常跟在全连接层后:

    然而非线性层是否需要单位高斯输入呢?可以控制。。。挤压或者缩放

    希望给数据更多的灵活性,而不仅仅是单位高斯 算法

    gamma和beta是学习参数。。。并没有失去数据的结构

    测试阶段不同:

    5. Babysitting the learning process

    第一步,preprocessing data 第二步,选择网络结构

    确保loss是正确的,接着从很小的训练集开始训练,查看模型是否正确,接着使用全部的数据,增加小的正则化项,然后找到能使得loss递减的学习速率。

    如果loss基本不变,可能是学习速率太小。。。

    获得nan cost,说明爆炸啦!学习速率太大

    6. Hyperparameter Optimization

    使用交叉验证

    可能原因:bad initialization

    相关文章

      网友评论

          本文标题:CS231N 学习笔记 Lecture 5&6 CNN及训练神经

          本文链接:https://www.haomeiwen.com/subject/flgynxtx.html