📄 estimate_y.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 + -