2014-10-04 57 views
1

我正在尝试对具有2个单位输入层,2个单位隐藏层和1个单位输出层的简单前馈神经网络执行梯度检查。我做的是以下几点:反向传播中的梯度检查

  1. 取所有层之间的网络权重的每个权重w,并使用w + EPSILON然后w - EPSILON执行前向传播。
  2. 使用两个前馈传播的结果计算数值梯度。

我不明白的是如何执行反向传播。通常,我将网络输出与目标数据(分类情况下)进行比较,然后反向传播网络中的误差导数。然而,我认为在这种情况下,其他值必须反向传播,因为在数值梯度计算结果中,不依赖于目标数据(但仅限于输入),而误差反向传播取决于目标数据。那么,梯度检查的反向传播部分应该使用什么值?

回答

0

无论你想做一些分类或让你的网络计算一定的数值​​函数,你总是有一些目标数据。例如,假设您想要训练一个网络来计算功能f(a, b) = a + b。在这种情况下,这是你要训练你的网络上的输入和目标数据:

a  b  Target 

1  1  2 
3  4  7 
21  0  21 
5  2  7 

     ... 

正如“正常”的分类问题,更多的输入目标对,就更好了。

+0

谢谢你的回应。但是,我正在具体询问梯度检查程序的情况。 – bdfgegtertasdg 2014-10-04 12:15:21

+0

反向传播完全一样。分类问题只是另一种数值问题。您需要为您的特定情况选择适当的错误函数,计算其导数,并反向传播该导数。 – 2014-10-04 12:18:42

+0

你打算使用什么错误函数? – 2014-10-04 12:19:09