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
|