在反向传播实现中,似乎是展开(将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作为向量吗?请详细说明我的理解! 谢谢。
答案 0 :(得分:0)
为了使用fmincg等现成的最小化器,已设置成本函数以将参数展开为单个向量参数!