为什么我们在神经网络反向传播中“展开”?

时间:2017-08-09 21:25:59

标签: neural-network backpropagation

在反向传播实现中,似乎是展开(将thetas作为一维向量)thetas然后将它们作为参数传递给成本函数的规范。

为了说明(我假设3层NN案例):

def NNCostFunction(unrolled_thetas, input_layer_size, hidden_layer_size, num_labels, X, y):

    # **ROLL AGAIN** unrolled_thetas to theta1, theta2 (3 layer assumption)
    # Forward propagate to calculate the cost
    # Then Back propagate to calculate the delta

    return cost, gradient_theta1, gradient_theta2

令我惊讶的是: 为什么我们将展开的thetas传递给函数,然后在函数内部再次滚动它(形成thetas的原始形状)?为什么我们不将原始的thetas传递给成本函数?

我想我不会在这里抓到重要的东西。我们必须有这样做的原因。是因为大多数语言中的优化实现只将theta作为向量吗?请详细说明我的理解! 谢谢。

1 个答案:

答案 0 :(得分:0)

我发现了。展开不是特定的反向传播。

为了使用fmincg等现成的最小化器,已设置成本函数以将参数展开为单个向量参数!