mismatchIter_v2.m 2.5 KB

1
  1. function mmNet = mismatchIter_v2(cIn, bigY, ts_idx, mmNet, trackVars) y_t = bigY(:, ts_idx); c_t = cIn; % Ny cells v_y = (mmNet.we_yn * y_t) - (mmNet.wi_cn * mmNet.r_cn * c_t); nActiv_y = v_y; nActiv_y(nActiv_y<mmNet.thresh) = 0; % Nc cells v_c = (mmNet.we_cn * c_t) - (mmNet.wi_yn * mmNet.r_yn * y_t); nActiv_c = v_c; nActiv_c(nActiv_c<mmNet.thresh) = 0; addpart = (mmNet.we_cn * c_t); % disp(mean(addpart(:))) % update weights if mmNet.y_plastic == 1 deltaWYe = -1*mmNet.eta.*v_y*y_t'; deltaWYi = mmNet.eta.*v_c*y_t'*mmNet.r_yn; else deltaWYe = zeros(size(mmNet.we_yn)); deltaWYi = zeros(size(mmNet.wi_yn)); end if mmNet.c_plastic == 1 deltaWCe = -1*mmNet.eta.*v_c*c_t'; deltaWCi = mmNet.eta.*v_y*c_t'*mmNet.r_cn; else deltaWCe = zeros(size(mmNet.we_cn)); deltaWCi = zeros(size(mmNet.wi_cn)); end mmNet.we_yn = mmNet.we_yn + deltaWYe; mmNet.wi_yn = mmNet.wi_yn + deltaWYi; mmNet.we_cn = mmNet.we_cn + deltaWCe; mmNet.wi_cn = mmNet.wi_cn + deltaWCi; if mmNet.signed_synapses == 1 %forbid negative w if using ss mmNet.we_yn(mmNet.we_yn<0) = eps; mmNet.wi_yn(mmNet.wi_yn<0) = eps; mmNet.we_cn(mmNet.we_cn<0) = eps; mmNet.wi_cn(mmNet.wi_cn<0) = eps; end % update lists tracking variables -- THIS IS VERY SLOW! Skip sometimes if trackVars == 1 mmNet.Vs_y(:,ts_idx) = v_y; mmNet.Vs_c(:,ts_idx) = v_c; mmNet.Fs_y(:,ts_idx) = nActiv_y; mmNet.Fs_c(:,ts_idx) = nActiv_c; mmNet.yWs_e(:,:,ts_idx+1) = mmNet.we_yn; mmNet.cWs_e(:,:,ts_idx+1) = mmNet.we_cn; mmNet.yWs_i(:,:,ts_idx+1) = mmNet.wi_yn; mmNet.cWs_i(:,:,ts_idx+1) = mmNet.wi_cn; mmNet.wyChanges_e(:,:,ts_idx) = deltaWYe; mmNet.wcChanges_e(:,:,ts_idx) = deltaWCe; mmNet.wyChanges_i(:,:,ts_idx) = deltaWYi; mmNet.wcChanges_i(:,:,ts_idx) = deltaWCi; end mmNet.errors_y(ts_idx) = sum(nActiv_y); mmNet.errors_c(ts_idx) = sum(nActiv_c); mmNet.allErrors(ts_idx) = mmNet.errors_y(ts_idx) + mmNet.errors_c(ts_idx); mmNet.yIn = bigY; mmNet.cIn = cIn; % if mod(ts_idx, 100) == 0 % yAct = reshape(nActiv_y, [20, 10]); % cAct = reshape(nActiv_c, [20, 10]); % maxmax = max(max(yAct(:)), max(cAct(:))); % % ySum = sum(nActiv_y); % cSum = sum(nActiv_c); % % % figure(3) % subplot(121) % imagesc(yAct) % caxis([0 maxmax]) % colorbar; % title(['Y Network Activity - ' num2str(ts_idx) ' - Tot: ' num2str(ySum)]) % % subplot(122) % imagesc(cAct) % caxis([0 maxmax]) % colorbar; % title(['C Network Activity - Tot: ' num2str(cSum)]) % end end