⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 estimate_y.m

📁 神经网络 高斯分布 最大后验估计 最大似然估计
💻 M
字号:
%------------------function DensityComponents_new--------------------


function Estimate_Y()
N=528; %the feature dimensionality of the input image
m=1000;%the number of the image samples
Nr=15;%the number of the neurons
K=10;%the number of bk

W=randn(Nr,K); %initialize W matrix
B=randn(N,K);  %initialize B matrix
Y=randn(m,Nr); %initialize Y matrix
stepsizey=0.01;
load('x.mat');

%X=zeros(47476,528);
X=train_f_mcut(1:1000,:);
%A=sum(W,2);
for n=1:50
    A=sum(W,2);
    for t=1:m %for every image,training 150 neurons 
        Y1=Y(t,:);%training the first set of neurons
        L2=zeros(N,N);
        L3=zeros(1,Nr);
        T=zeros(N,N);   
%         for j=1:Nr
%             for k=1:K
%                 T=T-Y1(j)*W(j,k)*B(:,k)*(B(:,k))';
%                % L2=L2+W(j,k)*B(:,k)*(B(:,k))';
%             end
%         end
        for k=1:K
              T=T-Y1*W(:,k)*B(:,k)*(B(:,k))';
        end
        L1=exp(T);
        
        for j=1:Nr
            for k=1:K
                L2=L2+W(j,k)*B(:,k)*(B(:,k))';      
            end
            L3(j)=0.5*X(t,:)*L1*L2*(X(t,:))';
        end

        Y0=zeros(1,Nr);
        for j=1:Nr
            Y0(j)=sign(Y1(j));
        end
 %update Y
        Y(t,:)=Y1+stepsizey*(-0.5*A'+L3-Y0); 
        disp(t);
    end
   %after updating one Y, we update B and W
%-------update B below
    temp=zeros(N,1);
    stepsizebk=0.01;
%    for n1=1:50
    for h=1:K
        B1=B(:,h);
        for t=1:m
            Y1=Y(t,:);
            T0=zeros(N,N);
            T2=zeros(N,1);
%             for j=1:Nr
%                 for k=1:K
%                     T0=T0-Y1(j)*W(j,k)*B(:,k)*(B(:,k))';
%                 end
%             end
            for k=1:K
                T0=T0-Y1*W(:,k)*B(:,k)*(B(:,k))';
            end
            T1=exp(T0);
    
%             for j=1:Nr
%                 for k=1:K
%                     T2=T2+2*Y1(j)*W(j,k)*B(:,k);
%                 end
%             end
            for k=1:K
                T2=T2+2*Y1*W(:,k)*B(:,k);
            end

            temp=temp+0.5*(X(t,:))'*X(t,:)*T1*T2;
            disp(t);
        end
        B(:,h)=B1+stepsizebk*temp;
        disp(h);
    end
 %   end
%-------update W below
    stepsizewjk=0.01;
%    for n2=1:50
        for i=1:Nr
            for q=1:K
                tempw=0;
                T5=0;
                W1=W(i,q);
                for t=1:m
                    Y1=Y(t,:);
                    T3=zeros(N,N);
%                 for j=1:Nr
%                     for k=1:K
%                         T3=T3-Y1(j)*W(j,k)*B(:,k)*(B(:,k))';
%                     end
%                 end
                    for k=1:K
                        T3=T3-Y1*W(:,k)*B(:,k)*(B(:,k))';
                    end
                    T4=exp(T3);
                    tempw=tempw-0.5*X(t,:)*T4*(-Y(i)*B(:,q)*(B(:,q))')*(X(t,:))';  
                    disp(t);
                end
                
                T5=T5-0.5*m*Y1(i)+tempw;
                W(i,q)=W1+stepsizewjk*T5;
                disp(q);
            end
            disp(i);
        end
%    end
  disp(n);
end
disp 'train over';
%function estimate_bk_wjk()
%I=ones(N,1);

% temp=zeros(N,1);
% stepsizebk=0.01;
% for n=1:50
%     for h=1:K
% %    for n=1:50 %update bk 
%         B1=B(:,h);
%         for t=1:m
%             Y1=Y(t,:);
%             T0=zeros(N,N);
%             T2=zeros(N,1);
% %             for j=1:Nr
% %                 for k=1:K
% %                     T0=T0-Y1(j)*W(j,k)*B(:,k)*(B(:,k))';
% %                 end
% %             end
%             for k=1:K
%               T0=T0-Y1*W(:,k)*B(:,k)*(B(:,k))';
%             end
%             T1=exp(T0);
%     
% %             for j=1:Nr
% %                 for k=1:K
% %                     T2=T2+2*Y1(j)*W(j,k)*B(:,k);
% %                 end
% %             end
%               for k=1:K
%                   T2=T2+2*Y1*W(:,k)*B(:,k);
%               end
% 
%             temp=temp+0.5*(X(t,:))'*X(t,:)*T1*T2;
%         end
%         B(:,h)=B1+stepsizebk*temp;
%     end
% end
% %------------??wjk
% 
% stepsizewjk=0.01;
% 
% for n=1:50
%     for i=1:Nr
%         for q=1:K
%           tempw=0;
%           T5=0;
%         
% %        for n=1:50
%           W1=W(i,q);
%             for t=1:m
%                 Y1=Y(t,:);
%                 T3=zeros(N,N);
% %                 for j=1:Nr
% %                     for k=1:K
% %                         T3=T3-Y1(j)*W(j,k)*B(:,k)*(B(:,k))';
% %                     end
% %                 end
%                 for k=1:K
%                    T3=T3-Y1*W(:,k)*B(:,k)*(B(:,k))';
%                 end
%                 
%                 T4=exp(T3);
%                 tempw=tempw-0.5*X(t,:)*T4*(-Y(i)*B(:,q)*(B(:,q))')*(X(t,:))';  
%             end
%             T5=T5-0.5*m*Y1(i)+tempw;
%             W(i,q)=W1+stepsizewjk*T5;
% %        end
%         end
%    end
% end



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -