利用CNN(卷积神经网络)来进行训练的一些概念

一、CNN中重要概念

  • stride:就是每跨多少步抽取一部分信息

加入stride后卷积图像大小的通用计算公式为:
输入图像:n*n,过滤器:f*f步长:s,padding:p
输出图像大小为:⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋,⌊⌋⌊⌋表示向下取整
以输入图像7*7,过滤器3*3,步长为2,padding模式为valid为例输出图像大小为:⌊(7+2∗0−32+1)⌋∗⌊7+2∗0−32+1)⌋=3∗3

tensorflow中自带的卷积操作代码定义:
https://tensorflow.google.cn/api_docs/python/tf/nn/conv2d

tf.nn.conv2d(
    input,
    filter,
    strides,
    padding,
    use_cudnn_on_gpu=True,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None
)
  • NCHW对应[batch_size,Channel,Heigth,Width]。
  • 假设输出图像大小为n*n与过滤器大小为 f*f,输出图像大小则为(n−f+1)∗(n−f+1)。
  • stride:对原有输入矩阵进行填充。原有卷积运算的缺点是,卷积图像的大小会不断缩小,另外图像的左上角的元素只被一个输出所使用,所以在图像边缘的像素在输出中采用较少,也就意味着你丢掉了很多图像边缘的信息,为了解决这两个问题,就引入了padding操作,也就是在图像卷积操作之前,沿着图像边缘用0进行图像填充。对于3*3的过滤器,我们填充宽度为1时,就可以保证输出图像和输入图像一样大。

padding的两种模式:
Valid:no padding
输入图像nn,过滤器ff,输出图像大小为:(n−f+1)∗(n−f+1)
Same:输出图像和输入图像一样大
参考:
1、CSDN:https://blog.csdn.net/ice_actor/article/details/78648780
2、:https://www.jianshu.com/p/5c1f9b28b01e

  • 卷积层的作用:提取特征。输入图像的通道数必须与卷积核的通道数相同(每个点做乘加)*
  • 激活函数:给线性方程增加非线性效果

欠拟合和过拟合应该怎么办?
过拟合:L2正则化,加入正则化 λ 来完善成本函数, λ 越大,w就被压缩的越小。

你可能感兴趣的:(利用CNN(卷积神经网络)来进行训练的一些概念)