2016年1月1日金曜日

Cousera Machine Learning / week5-4 めも

Implementation Note: Unrolling Parameters 授業メモ
function [jVal, gradient] = costFunction(theta)
...

optTheta = fminunc(@costFunction. initalTheta, options)

Neural Network(L-4):
 theta  matrices (Theta1, Theta2, Theta3)
 D matrices (D1, D2, D3)
 
 -------------------------
thetaVec = [Theta1(:), Theta2(:); Theta3(:)];
DVec = [D1(:); D2(:); D3(:)];

ここでTheta1(:)の意味は、Theta1の各要素をすべて列にしたもの
つまり
octave:7> b=[1 3; 2 4]
b =
   1   3
   2   4
があったっとき、b(:)は、次のようになる
octave:8> b(:)
ans =
   1
   2
   3
   4
-------

Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11

Theta1 = reshape(thetaVector(1:110),10,11)
Theta2 = reshape(thetaVector(111:220),10,11)
Theta3 = reshape(thetaVector(221:231),1,11)

reshape関数は、reshape(a, size)のように書いて次のように行列の変形をできる
> reshape([1,2,3,4], 2,2)
ans =
   1   3
   2   4

---------
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
> ThetaVec =[ Theta1(:); Theta2(:); Theta3(:) ];
octave:10> size(ThetaVec)
ans =
   231     1
ここでsizeは行列のサイズを返し、次のようになる
> a=[1,2;3,4;5,6]
a =
  1  2
  3  4
  5  6
octave> size(a)
ans =
  3  2
octave> size(a,1)
ans =  3
octave> size(a,2)
ans =  2

1> 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
---------------

0 件のコメント:

コメントを投稿