Neural Networks Learning: Implementation note unrolling
Octave programming
아래 방법 처럼 초기 Weight
vector를 생성하고
이것을 긴 하나의 vector로 언롤링 한다.
그리고 reshape
을 이용해서 다시 복구 할 수 있다.
octave:1> Theta1 = ones(10,11)
Theta1 =
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
octave:2> Theta2 = 2 *ones(10,11)
Theta2 =
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2
octave:3> Theta3 = 3*ones(1,11)
Theta3 =
3 3 3 3 3 3 3 3 3 3 3
octave:8> thetaVec = [ Theta1(:); Theta2(:); Theta3(:)];
octave:9> size(thetaVec)
ans =
231 1
octave:10> reshape(thetaVec(1:110), 10,11)
ans =
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
위와 같이 긴 vector를 만듬으로써 fminunc
의 성능을 끌어 올릴 수 있다.
Cost function을 계산 할때에는 reshape을 통해서 각각의 다시 계산하게 된다.
'MOOC > Machine Learning (python)' 카테고리의 다른 글
Random Initialization (0) | 2016.09.19 |
---|---|
Gradient Checking (0) | 2016.08.04 |
Neural Networks_Learning_3: Backpropagation Intuition (0) | 2016.07.22 |
Week04: Programming Exercise 3: Multi-class classification and Neural Networks (0) | 2016.07.14 |
Week 04: Neural Networks (0) | 2016.07.12 |