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

📄 update_wts.m

📁 随机神经网络工具箱
💻 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 + -