这是一个由两个卷积层和一个完全连接层组成的网络的简单示例。
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的渐变。我究竟做错了什么 ?抱歉,我的英文大写字母是多少,我只想了解为什么渐变大小与过滤器大小不匹配。