-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Hello, me again - I may have come across a bug, though of course it could simply be a mistake on my end. I was trying to replicate a line of code from the matlab demo where iterations are forced by and outside for-loop (i.e., each internal max_iter =1) What is happening is that when I try to run many iterations with W_init and H_init set to the previous W and H, I immediately receive this following error:
File "/home/jsherman/miniconda3/envs/mfadae/lib/python3.7/site-packages/seqnmf/seqnmf.py", line 58, in seqnmf
X[mask] = X_hat[mask]
IndexError: boolean index did not match indexed array along dimension 1; dimension is 96 but corresponding boolean dimension is 102
I am wondering if it has to do with the line below
ln 44 T = X.shape[1] + 2 * L
My simple reason is that for my case L is 3, so 2*L is 6 which is the amount of the index error
The original matlab shows
% zeropad data by L X = [zeros(N,L),X,zeros(N,L)]; [N, T] = size(X);
Their iterative code is
[W, H, ~,loadings,power]= seqNMF(X,'K',K,'L',L,...
'lambda', .00002,'lambdaL1W', 0, 'lambdaL1H', 0, ...
'lambdaOrthoW', 0, 'lambdaOrthoH', 0.1, 'maxiter', 1, 'showPlot', 0); `
for iteri = 1:1000
if iteri<20 || mod(iteri,10)==0
clf; SimpleWHPlotSpectrograms(W(:,:,:),H(:,tstart:end), [], 0)
set(gcf, 'color', [0 0 0])
title(['Iteration ' num2str(iteri)]); drawnow
cdata = print(gcf, '-RGBImage', '-r300');
[w, h, ~] = size(cdata);
cdata = reshape(cdata, w*h,3);
cdata(mean(cdata,2)==255,:)=1;
cdata = reshape(cdata,w,h,3);
step(obj, cdata);
end
[W, H]= seqNMF(X,'K',K,'L',L,...
'lambda', .00002,'lambdaL1W', 0.5, 'lambdaL1H', 0,...
'maxiter', 1, 'showPlot', 0,...
'lambdaOrthoW', 0, 'lambdaOrthoH', 0.1, 'W_init', W, 'H_init', H, 'SortFactors', 0);
Mine is
W, H, cost, loading, power = seqnmf(w_s, K=self.source_num, L=3, Lambda=0.001, lambda_L1W=0, lambda_OrthH=0,\
max_iter=1, sort_factors=0)
for i in range(0, 1000):
W, H, cost, loading, power = seqnmf(w_s, K=self.source_num, L=3, Lambda=0.001, lambda_L1W=0, lambda_OrthH=0,\
W_init=W, H_init=H, max_iter=1, sort_factors=0)