微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当存在两个或更多隐藏层时,如何计算神经网络中第一个隐藏层的增量?

如何解决当存在两个或更多隐藏层时,如何计算神经网络中第一个隐藏层的增量?

当XOR问题只有一个隐藏层时,我能够计算反向传播。反向传播时,我通过将隐藏层(a2)的参数乘以输出增量来计算该层的误差。然后将其乘以该层的导数。以下代码是该项目的代码段。 例如:

x = 1x3 matrix
y = 1x1 value
parameters = [[1x3 matrix],[2x3 matrix],[2x3matrix]]
a = [[1x3 matrix],[1x3 matrix],[1x1 matrix]]

delta[3] = a[3] - expected_output    //1x1 matrix
total_delta[3] = delta[3].T * a[2]    //1x3 matrix

sigmoid_derivative[2] = a[2] - (1 - a[2])    // = 1x2 matrix,excludes bias unit
delta[2] = parameters[3] .* delta[3] .* sigmoid_derivative[2]    // 1x2 matrix
total_delta[2] = delta[2].T * a[2]    //2x3 matrix

sigmoid_derivative[1] = a[1] - (1 - a[1])    //1x2 matrix,excludes bias unit
delta[1] = parameters[1] .* delta[2] * sigmoid_derivative[1]   //2x3 matrix
total_delta[3] = delta[1].T * x_input    //results in an error as a 3x2 matrix(delta[1]) cannot be multiplied by a 1x3 matrix(x_input])

我的过程如下图所示。但是,当有两层时,第一个隐藏层的总增量太大/大小错误。我不确定自己在做什么错。上面的代码不是我的项目中实现的确切代码,但是它是一个近似值,对于只有一个x和y值进行训练的神经网络已进行了简化。

picture of the neural network layout

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。