这是一个由两个卷积层和一个全连接层组成的网络的简单示例。
target = 10x1
input = 15x15
con_1 = 5x5 // filter size
con_2 = 3x3 // filter size
fc = 10x81
// forward pass
out_1 = convolution(input,con_1) = 11x11
out_2 = convolution(out_1,con_2 = 9x9
out_3 = matrix multiplication(fc,out_2)
// backward pass
fc_err = err from fully connected layer
con_2_err = convolution(filter con_2,fc_err)// result 10x10
gradient = convolution(out_1,con_2_err) // result 2x2
在 fc 级别找到错误后,我必须在 conv_2 卷积级别传递它。我担心的是错误大小为 10x1,而 con_2 过滤器大小为 3x3。所以应该是?如果是这样,那么我需要将过滤器3x3的大小带到10x10,然后卷积的结果将是一个10x10的矩阵。con_2 层的梯度将是 out_1 和 con_2_err 卷积的结果,这将给出一个 2x2 矩阵。要更新 con_2 过滤器的权重,我需要一个 3x3 梯度。我究竟做错了什么 ?对不起,大文字和我的英语,我只是想了解为什么渐变的大小与过滤器的大小不匹配。