我正在尝试使用 python Numpy实现CNN 。
我搜索了很多,但我发现的只是一个带有一个卷积通道的过滤器。
假设我们有一个X作为具有这种形状的图像:(N_Height, N_Width, N_Channel) = (5,5,3)
假设我有16
这种形状的过滤器(F_Height, F_Width, N_Channel) = (3,3,3)
:stride=1
和padding=0
前锋:
conv2d 之后的输出形状将是
(
math.floor((N_Height - F_Height + 2*padding)/stride + 1 )),
math.floor((N_Width- F_Width + 2*padding)/stride + 1 )),
filter_count
)
所以这一层的输出将是一个具有这种形状的数组:(Height, Width, Channel) = (3, 3, 16)
反向传播:
认为是我的层在这种形状的反向传播中的输入:(3,3,16)
现在我必须找到和:更新我的过滤器参数和将其作为输入传递给前一层,作为输入X的损失。
从这个答案中关于过滤器权重的错误我发现了如何计算.
我在BackPropagation中遇到的问题是我不知道如何计算具有这种形状:(5,5,3)
并将其传递到上一层。
我在 Medium 和其他网站上阅读了很多文章,但我不知道如何计算它:
反向传播在 CNN 中的工作原理
互联网上对卷积神经网络的最佳解释!
卷积神经网络中的反向
传播 如何将误差传播回 CNN 中的前一层?
提前致谢 :)