zoukankan      html  css  js  c++  java
  • caffe源码 卷积层

    通俗易懂理解卷积

    • 图示理解神经网络的卷积
      • input: 3 * 5 * 5 (c * h * w)
      • pading: 1
      • 步长: 2
      • 卷积核: 2 * 3 * 3 * 3 ( n * c * k * k )
      • output: 2 * 3 * 3 ( c * h * w )

    如下图所示: image

    深入理解卷积

    • 首先需要理解caffe里面的im2col和col2im
    • 然后 卷积层 其实和 全连接层 差不多了

    理解im2col

    • 图示理解im2col
      • input: 3 * 4 * 4 ( c * h * w )
      • 卷积核: 3 * 3 * 3 ( c * h * w )
      • output: ( 3 * 3 * ) * ( 2 * 2 ) ( h * w )

    如下图所示: image

    卷积层的实现

    im2col转换前
    • input: 1 * c * h * w
    • 卷积核: m * c * k * k
      • m 个卷积核
    • 步长: stride
    • 填充: pad
    • 扩展: dilation
    • output: 1 * m * H * W
      • H = ( h + 2 * pad - dilation * ( k - 1 ) ) / stride + 1
      • W = ( w + 2 * pad - dilation * ( k - 1 ) ) / stride + 1

    im2col转换后
    • input: 1 * ( c * k * k ) * ( H * W )

    • weight: m * (c * k * k)

    • bias: m * 1

    • output: 1 * m * H * W

    • 则公式(即前向传播)为:output = input * weight + bias * 全1矩阵 ( 1 * H * W )

    • 反向传播和全连接层一样(详细参考全连接层的推导):

      • 梯度传递:bottom_diff = top_diff * weight
      • 对w求导:weight_diff = top_diff * bottom + weight_diff(累积梯度)
      • 对b求导:bias_diff = top_diff + bias_diff(累积梯度)
  • 相关阅读:
    combineByKey
    reduceByKey和groupByKey的区别
    Spark-Streaming之window滑动窗口应用
    归并排序
    SparkSQL的3种Join实现
    大数据面试题及答案
    Spark-Join优化之Broadcast
    Spark map-side-join 关联优化
    解决spark中遇到的数据倾斜问题
    Greenplum-cc-web安装
  • 原文地址:https://www.cnblogs.com/ERKE/p/7630295.html
Copyright © 2011-2022 走看看