深度学习笔记一:CNN

卷积神经网络学习

以Yann LeCun的LeNet5介绍卷积神经网络

卷积层

每个卷积层包含三部分:卷积、非线性激活函数和池化。使用卷积提取空间特征。
LeNet5的卷积参数使用为“VALID”,而不是“SAME”

“VALID”:只会丢掉最右边的列(或最底部的行)
“SAME”:尝试向左或右均匀填充,但如果添加的列数是奇数,它将向右添加偶数,向左侧添加奇数个列(向下添加偶数个列,向上添加奇数个列)

在 tensorflow 中,tf.nn.conv2d函数和tf.nn.max_pool函数,尺寸变化:
对于SAME填充,输出高度和宽度计算如下:
out_height = ceil(float(in_height)/ float(strides [1]))
out_width = ceil(float(in_width)/ float(strides [2]))

对于VALID填充,输出高度和宽度计算如下:
out_height = ceil( float(in_height - filter_height + 1)/ float(strides[1]))
out_width = ceil( float(in_width - filter_width + 1)/ float(strides [2]))

卷积层与全连接层的区别

卷积层参数和全连接层的参数数量见linklink.

卷积核如何生成

  • 卷积核反映特征,如何选择卷积核,针对特定应用场景选择不同的卷积核?卷积核大小必须大于1才有提升感受野的作用,1排除了。而大小为偶数的卷积核即使对称地加padding也不能保证输入feature map尺寸和输出feature map尺寸不变,2排除了。所以一般都用3作为卷积核大小。
  • CNN通常采用小而深的卷积核。与大卷积核相比,几个小卷积核在保持连通性的前提下,大大降低了参数的个数以及计算复杂度。

激活函数的作用

  • 如果不用激活函数,每一层输出都是上层输入的线性表达,无论网络有多少层,输出都是输入的线性组合,只能用于线性分类问题。
  • 激活函数给神经元引入了非线性因素,使得网络可以逼近任何非线性函数,这样神经网络就可以应用到众多的非线性问题解决中。

常见激活函数

常见激活函数包括softmax、sigmoid,tanh和ReLu等。

Dropout

  • 在做图像分类时将Dropout层加在全连接层后防止过拟合,可以避免某些特征只在固定组合下才生效,有意识地让网络去学习一些普遍的共性(而不是某些训练样本的一些特性)这样能提高训练出的模型的鲁棒性。
  • Dropout可视为正则化的一种替换形式,功能类似于L2正则化,但Dropout更适用于不同的输入范围。
  • 困惑的一点是Dropout很少用于卷积层,博客link指出卷积层也可用Dropout,但是训练效果变差,需要增加训练次数或微调学习率,可能原因卷积层的参数较少,不容易过拟合。
  • Dropout层更多用于大型神经网络,小型的神经网络的性能提升是否明显?

Batch Normalization

Batch normalization的原理是什么?
逻辑回归和SVM的联系和区别是什么?

参考:

  1. https://blog.csdn.net/sean2100/article/details/83782780
  2. https://blog.csdn.net/u012938704/article/details/79873530
  3. https://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/
  4. https://blog.csdn.net/feng_jiakai/article/details/81077773
  5. https://www.zhihu.com/question/38098038
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值