向后传播Python中的错误

时间:2016-11-21 19:35:48

标签: python neural-network backpropagation

5.3 docs

我试图了解错误的向后传播是如何工作的,因此我尝试使用上面显示的非常简单的神经网络来做到这一点。

到目前为止,我已完成以下操作:

import numpy as np

def forward_propagation(X, theta_1, theta_2):
    z2 = np.dot(X, theta_1)
    a2 = sigmoid(z2)
    z3 = np.dot(a2, theta_2)
    y  = sigmoid(z3)
    return y

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

if __name__ == '__main__':
    input_layer  = 1
    hidden_layer = 1
    output_layer = 1

    # theta_1 = np.random.randn(input_layer, hidden_layer)
    # theta_2 = np.random.randn(hidden_layer, output_layer)

    theta_1 = np.array(([0.2]))
    theta_2 = np.array(([0.1]))

    X = np.array(([-5]), dtype=float)
    predicted_y = forward_propagation(X, theta_1, theta_2)
    print predicted_y
    Y = np.array(([1]), dtype=float)

带输出:

 [ 0.50672313]

所以现在我激活了Y,但我根本不了解如何向后传播并更新参数theta_1theta_2。我一直试图跟随enter image description here,但我根本不理解它。我发现的其他视频似乎也以不同方式向后传播错误,因此它只会让我更加困惑。

1 个答案:

答案 0 :(得分:0)

我首先尝试理解细节中的梯度下降,并且可能通过笔和纸来计算更简单的任务,例如逻辑回归或任何其他基于梯度的最小二乘任务。利用神经网络,理解分化的链规则也非常重要。

如果你得到了这个,你可以开始将它应用到神经网络。它会清理很多东西。