码迷,mamicode.com
首页 > 其他好文 > 详细

未完成的hw3

时间:2016-01-11 01:25:31      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

新建脚本文件,最後得到的答案是錯的,運行了一個loop就結束了==

a=1:14;

 b=1:3;

 c=1:148; %代表矩陣維度

 T=x(:,1:3);%目標數組

 fai=ones(148,14);%輸入

 fai(:,2:14)=x(:,4:16);

 w=zeros(14,3);%w數組

 e1=0.1;

 e2=0.2;%前後兩個error值,方便比較error的變化

 while(abs(e1-e2)>0.000001)

    Ak=fai*w;%計算Ak

    Ak=exp(Ak);

    Ak(:,4)=sum(Ak,2);

    e=0;

    for n=c

        for k=b

            Y(n,k)=Ak(n,k)/Ak(n,4);%計算Y矩陣

            e = e - T(n,k)*log(Y(n,k));%計算error函數

        end

    end

    Y

    e2=e1

    e1=e

 

    e_dev=zeros(3,14);%計算一階導數

    for j=b

        for n=c

            e_dev(j,:)=(Y(n,j)-T(n,j))*fai(n)+e_dev(j,:);

        end

    end

 

    H1=zeros(14,14);%計算Hessian矩陣

    for n=c

        H1 = H1 + Y(n,1)*(1-Y(n,1))*fai(n)‘ * fai(n);

    end

     H2=zeros(14,14);

    for n=c

        H2 = H2 + Y(n,2)*(1-Y(n,2))*fai(n)‘ * fai(n);

    end

    H3=zeros(14,14);

    for n=c

        H3 = H3 + Y(n,3)*(1-Y(n,3))*fai(n)‘ * fai(n);

    end

 %更新w值

    w(:,1)=w(:,1)-pinv(H1)*e_dev(j,:)‘

    w(:,2)=w(:,2)-pinv(H2)*e_dev(j,:)‘

    w(:,3)=w(:,3)-pinv(H3)*e_dev(j,:)‘

end

未完成的hw3

标签:

原文地址:http://www.cnblogs.com/lzq031/p/5120024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!