我在训练CNN时遇到一些问题:(
例如3D数据(宽度,高度,深度):
输入6x6x3、1个内核3x3x3,输出= 4x4x1 =>池:2x2x1
This和其他辅导老师介绍了如何计算权重的增量和仅输入2D(无深度)的输入:
输入*输出= 2D权重的增量
过滤器*输出=输入增量
但是如何计算3D滤镜的权重增量?
我必须按如下所示将每个输入乘以输出吗?
FilterLayer1Delta = OutputDelta * InputLayer1
FilterLayer2Delta = OutputDelta * InputLayer2
FilterLayer3Delta = OutputDelta * InputLayer3
位置:
FilterLayerNDelta是当前过滤器层的增量
InputLayerN是当前滤镜层的输入图像
答案 0 :(得分:0)
这不是3D滤镜,这是标准2D滤镜。 3d过滤器如下所示:https://i.imgur.com/jriyCTU.png?1(橙色框)。这是一个普遍的误解。 2D卷积实际上是更多的过滤器集合(由深度表示),每个过滤器的深度等于输入层(也称为通道)的深度。
但是,我认为您要问的是如何计算每个过滤器的最终值。我已经在ai.stackexhange上回答了这样的问题,请参见此处的链接:https://ai.stackexchange.com/a/13591/26726
基本上,您需要将滤波器的每个通道与特定位置处的相应输入通道相乘,然后将它们相加以获得单个值,然后对每个通道的所有输出的输出位置处的每个值求和,以获得最终值该特定卷积层中该特定过滤器在该位置的值。
编辑:
这是向前通过的图像。我目前正在创建反向传递(反向传播)可视化,只是将其用作占位符。
编辑:
这是向后传递的图像,为输出分配了随机梯度,然后反向传播以查找过滤器1通道1中每个权重的梯度: