Class_7 Caffe Layers之deconv_layer(反卷积层)
1. 概述
deconv_layer是反卷积层,在DL领域又叫转置卷积。
反卷积层到目前最大的用处就是实现上采样。典型的如yolov3和yolov4中,做feature map融合的时候,先采取1*1卷积降维,然后采用反卷积实现上采样。
deconv_layer也是和base_conv_layer有千丝万缕的联系,鉴于在讲conv_layer的时候已经讲过,在此不做赘述。
2. deconv_layer
(1)compute_output_shape
compute_output_shape功能是用来计算反卷积输出的H和W信息。
首先是从传入的参数中,提取kernel_shape_data, stride_data, pad_data, dilation_data。
然后根据公式将H和W信息导入output_shape。
(2)Forward_cpu
在反卷积层中,前向计算是调用的backward_cpu_gemm这个函数。具体就是实现bottom_data * weight = top_data。
(3)Backward_cpu
Backward_cpu稍微复杂一些。
首先是调用backward_cpu_bias对偏执进行反向传播。
然后调用weight_cpu_gemm更新权重的偏差,权重偏差更新公式是:
weight_diff = top_diff * bottom_data + weight_diff
最后调用forward_cpu_gemm更新bottom_diff, 更新公式是:
bottom_diff = top_diff * weight_data。
3. 更新weight_data和bias_data
所有的反向操作的目的都是更新weight_data和bias_data。
当我们计算好了weight_diff和bias_diff以后,更新权值和偏置这一步都是由各优化器的ApplyUpdate来完成。