📄 update_wts.m
字号:
% File Name : update_wts.m
% Purpose : updating the weights of the RNN
% Author : Hossam E. Mostafa Abdelbaki, School of Computer Science,
% University of Centeral Florida (UCF).
% Release : ver. 1.0.
% Date : October 1998.
%
% RNNSIM is a software program available to the user without any
% license or royalty fees. Permission is hereby granted to use, copy,
% modify, and distribute this software for any purpose. The Author
% and UCF give no warranty, express, implied, or statuary for the
% software including, without limitation, waranty of merchantibility
% and warranty of fitness for a particular purpose. The software
% provided hereunder is on an "as is" basis, and the Author and the
% UCF has no obligation to provide maintenance, support, updates,
% enhancements, or modifications.
%
% RNNSIM is available for any platform (UNIX, PCWIN, MACHITOCH).
% It runs under MATLAB ver. 5.0 or highrer.
%
% User feedback, bugs, or software and manual suggestions can
% be sent via electronic mail to : ahossam@cs.ucf.edu
%%%%%%%%%%%%%%%%Function Update_Weights %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%updating the weights %%%%%%%%%%%%%%
calc_inv;
%%%%FUNCTION: Calc_Gamma %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% Calculating the weight updates %%%%%%%%%%%%%
for u = 1:N_Input
for v = (N_Input+1):(N_Input+N_Hidden)
for i = 1:N_Total
gammaplus(i) = 0.0;
gammaminus(i) = 0.0;
if ((u ~= i) & (v == i))
gammaplus(i) = 1.0/D(i);
gammaminus(i) = -q(i)/D(i);
end
if ((u == i) & (v ~= i))
gammaplus(i) = -1.0/D(i);
gammaminus(i) = -1.0/D(i);
end
if ((u == i) & (v == i))
gammaminus(i) = -(1.0 + q(i))/D(i);
end
end
sum1 = 0;
sum2 = 0;
for i = (N_Input+N_Hidden+1):N_Total
vmplus = gammaplus(u) * Winv(u,i) + gammaplus(v) * Winv(v,i);
vmminus = gammaminus(u) * Winv(u,i) + gammaminus(v) * Winv(v,i);
sum1 = sum1 + vmplus * (q(i) - y(k,i)) * q(u);
sum2 = sum2 + vmminus * (q(i) - y(k,i)) * q(u);
end
wplus(u,v) = wplus(u,v) - Eta * sum1;
wminus(u,v) = wminus(u,v) - Eta * sum2;
if (u == v)
wplus(u,v) = 0.0;
wminus(u,v) = 0.0;
end
if (wplus(u,v) < 0)
wplus(u,v) = 0.0;
end
if (wminus(u,v) < 0)
wminus(u,v) = 0.0;
end
end
end
for u = (N_Input+1):(N_Input+N_Hidden)
for v =(N_Input+N_Hidden+1):N_Total
for i = 1:N_Total
gammaplus(i) = 0.0;
gammaminus(i) = 0.0;
if ((u ~=i) & (v == i))
gammaplus(i) = 1.0/D(i);
gammaminus(i) = -q(i)/D(i);
end
if ((u == i) & (v ~= i))
gammaplus(i) = -1.0/D(i);
gammaminus(i) = -1.0/D(i);
end
if ((u == i) & (v == i))
gammaminus(i) = -(1.0 + q(i))/D(i);
end
end
sum1 = 0;
sum2 = 0;
for i = (N_Input+N_Hidden+1):N_Total
vmplus = gammaplus(u) * Winv(u,i) + gammaplus(v) * Winv(v,i);
vmminus = gammaminus(u) * Winv(u,i) + gammaminus(v) * Winv(v,i);
sum1 = sum1 + vmplus * (q(i) - y(k,i)) * q(u);
sum2 = sum2 + vmminus * (q(i)-y(k,i)) * q(u);
end
wplus(u,v) = wplus(u,v) - Eta * sum1;
wminus(u,v) = wminus(u,v) - Eta * sum2;
if (u == v)
wplus(u,v) = 0.0;
wminus(u,v) = 0.0;
end
if (wplus(u,v) < 0)
wplus(u,v) = 0.0;
end
if (wminus(u,v) < 0)
wminus(u,v) = 0.0;
end
end
end
%%%%%%%%%%%%%%%end Calc_Gamma %%%%%%%%%%%
%%%%%%%%%%%%%%end Update_Weights %%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -