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

How to train and update weights of 3D filters

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

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

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

CONVOLUTION EXAMPLE IMAGE

This 和其他导师正在解释权重的计算增量和仅用于 2D(无深度)的输入:

输入 * 输出=二维权重的增量

过滤器 * 输出 = 输入增量

但是我如何计算 3D 过滤器的权重增量?

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

FilterLayer1Delta = OutputDelta * InputLayer1

FilterLayer2Delta = OutputDelta * InputLayer2

FilterLayer3Delta = OutputDelta * InputLayer3

其中:

FilterLayerNDelta 是当前过滤器层的增量

InputLayerN 是当前过滤器层的输入图像

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

不过,我想你想问的是如何计算每个过滤器的最终值。我已经在 ai.stackexhange 上回答过这样的问题,link 见这里:https://ai.stackexchange.com/a/13591/26726

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

编辑:

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

编辑:

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