如何训练和更新3D滤镜的权重

时间:2019-08-14 11:36:47

标签: conv-neural-network training-data backpropagation

我在训练CNN时遇到一些问题:(

例如3D数据(宽度,高度,深度):

输入6x6x3、1个内核3x3x3,输出= 4x4x1 =>池:2x2x1

CONVOLUTION EXAMPLE IMAGE

This和其他辅导老师介绍了如何计算权重的增量和仅输入2D(无深度)的输入:

输入*输出= 2D权重的增量

过滤器*输出=输入增量

但是如何计算3D滤镜的权重增量?

我必须按如下所示将每个输入乘以输出吗?

FilterLayer1Delta = OutputDelta * InputLayer1

FilterLayer2Delta = OutputDelta * InputLayer2

FilterLayer3Delta = OutputDelta * InputLayer3

位置:

FilterLayerNDelta是当前过滤器层的增量

InputLayerN是当前滤镜层的输入图像

1 个答案:

答案 0 :(得分:0)

这不是3D滤镜,这是标准2D滤镜。 3d过滤器如下所示:https://i.imgur.com/jriyCTU.png?1(橙色框)。这是一个普遍的误解。 2D卷积实际上是更多的过滤器集合(由深度表示),每个过滤器的深度等于输入层(也称为通道)的深度。

但是,我认为您要问的是如何计算每个过滤器的最终值。我已经在ai.stackexhange上回答了这样的问题,请参见此处的链接:https://ai.stackexchange.com/a/13591/26726

基本上,您需要将滤波器的每个通道与特定位置处的相应输入通道相乘,然后将它们相加以获得单个值,然后对每个通道的所有输出的输出位置处的每个值求和,以获得最终值该特定卷积层中该特定过滤器在该位置的值。

编辑:

这是向前通过的图像。我目前正在创建反向传递(反向传播)可视化,只是将其用作占位符。 enter image description here

编辑:

这是向后传递的图像,为输出分配了随机梯度,然后反向传播以查找过滤器1通道1中每个权重的梯度:

enter image description here