%Set up the Data x = [train0(1:10,:)' train1(1:10,:)', train2(1:10,:)', train3(1:10,:)' train4(1:10,:)' train6(1:10,:)' train7(1:10,:)' train8(1:10,:)' train9(1:10,:)']; x = double(double(x)>150); %Data Size numtrain=size(x,2); numdims = size(x,1); %Learn a Hopfield model mn = (1./numtrain).*sum(x,2); xmn = x - repmat(mn,1,numtrain); ww= inv(xmn'*xmn./numdims+1e-5*eye(numtrain)); w = 2*xmn*ww*xmn'./numdims;dw=diag(w);%w=w-diag(dw); b = 2*mn-w*mn-1; w=5*w;b=5*b; %Do the sampling rbmdata = zeros(numdims,30); samplepic=-ones(500*numdims,400); % Thirty different sample runs for ii = 1:30; disp(['Sample run ' num2str(ii)]); samplepic((ii-1)*numdims+1:(ii-1)*numdims+numdims,1:400) = samplebm(w,b,400); rbmdata (:,ii) = samplepic((ii-1)*numdims+1:(ii-1)*numdims+numdims,400); end %Draw the pictures. for ii=1:30 imagesc(reshape(rbmdata(:,ii),28,28)'); title('An example sample'); drawnow; pause end %Show the sample path figure(2) imagesc(samplepic(1:784,:)); title('An example sample path');