2017-08-09 75 views
0

在反向傳播實現中,展開(將theta作爲一維向量)看起來是一個規範,然後將它們作爲參數傳遞給成本函數。爲什麼我們要「展開」神經網絡反向傳播中的theta?

爲了說明(我asuume 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 

是什麼讓我納悶的是: 爲什麼我們通過展開θ驅動的功能,然後再捲起來(形成θ驅動的原始形狀)裏面的函數?爲什麼我們不把原始的經濟理念傳遞給成本函數呢?

我想我並沒有在這裏掌握重要的東西。我們爲什麼要這樣做一定是有原因的。是否因爲大多數語言的優化實施只將θ作爲矢量?請闡明我的理解! 謝謝。

回答

0

我想通了。展開不是反向傳播特定的。

爲了使用現成的最小化程序(如fmincg),成本函數已設置爲將參數展開爲單個向量參數!