【发布时间】:2019-10-01 07:03:39
【问题描述】:
我从几篇文章中了解到,要计算过滤器的梯度,只需将输入体积作为输入,误差矩阵作为内核进行卷积。之后,您只需用梯度减去过滤器权重(乘以学习率)。我实现了这个过程,但它不起作用。
我什至尝试自己用笔和纸进行反向传播过程,但我计算的梯度并没有使过滤器的性能更好。那我是不是对整个过程理解错了?
编辑: 我将提供一个例子来说明我对 CNN 中的反向传播及其问题的理解。
考虑一个卷积层的随机输入矩阵:
1, 0, 1
0, 0, 1
1, 0, 0
还有一个随机权重矩阵:
1, 0
0, 1
输出将是(应用 ReLU 激活器):
1, 1
0, 0
该层的目标是一个用零填充的 2x2 矩阵。这样,我们知道权重矩阵也应该用零填充。
错误:
-1, -1
0, 0
通过应用上述过程,梯度为:
-1, -1
1, 0
所以新的权重矩阵为:
2, 1
-1, 1
这无济于事。如果我重复这个过程,过滤器的权重就会达到非常高的值。所以我一定在某个地方犯了错误。那么我做错了什么?
【问题讨论】:
-
"我是不是对整个过程理解错了?"没有一个详细的例子来说明你是如何理解它没有多大意义,当然也不是一个有效的 SO 问题。既然你说你确实实现了这个过程,请在这里分享实现,否则你的问题太笼统和模糊了
标签: machine-learning deep-learning conv-neural-network backpropagation