我們需要將parameters從矩陣unrolling到向量,這樣我們就可以使用adanced optimization routines.
unroll into vectors
costFunction與fminunc里面的theta都是n+1維的向量,costFunction的返回值gradient也是n+1維的向量。
但是當我們使用神經網絡時,我們的Θ和gradient都是一個矩陣,而不是一個向量.在這兒我們的目標是將這些矩陣展開為向量,這樣就可以使用上面的這兩個函數了。
如何unroll成向量的例子
如上圖所示,我們可以將矩陣轉換為向量(thetaVec and DVec are big long vector),也可以將向量利用reshape變為矩陣。
具體的unrolling如何工作的
?
?在costFunction中,我們會從thetaVec中得到Θ(1),Θ(2),Θ(3),,這樣方便我們計算后面所需要的D(1),D(2),D(3),和J(Θ);
然后再將這些D(1),D(2),D(3)unroll to 得到gradientVec進行返回。
?
總結(什么時候使用矩陣,什么時候使用向量)
使用矩陣的情況: 當做forward propagation?和 back propagation時,我們需要使用矩陣來計算,這里就需要用reshape來構建矩陣。
使用向量的情況: 當使用fminunc這些advanced算法的時候,這些函數的參數是向量,這時我們需要將矩陣轉化為向量來計算。
?