Name: Anonymous 2014-07-22 13:29
Can be yours or not, I just want to see something good.
%%data = [1,0,0,1; 1,0,1,0]
%%data = rand(8,4)
n = size(data, 1);
m = size(data, 2);
neurons = 50;
decay = 0.95;
lr = 0.2;
weights = [];
weights(1:m, 1:neurons) = 0;
weights = randn(size(weights)) ./ 100.0;
delta = zeros(size(weights));
pdata = [];
batchsize = 2000;
blocki = [1:batchsize];
for(iter=1:2000)
blocki = mod(blocki .+ batchsize, n) .+ 1;
shortdata = data(blocki, :);
insig1b = shortdata * weights;
sig1b = sigmoid(insig1b);
pos = shortdata' * sig1b;
insig2a = sig1b * weights';
sig2a = sigmoid(insig2a);
insig2b = sig2a * weights;
sig2b = sigmoid(insig2b);
%% neg = data' * sig2b; %%??
neg = sig2a' * sig2b;
delta = delta .* decay .+ ((pos .- neg) ./ n) .* lr;
weights = weights .+ delta;
pdata(iter) = sum(abs(shortdata(:) .- sig2a(:)) ./ (batchsize * m));
fprintf("%citer %i, err %i / 100 ", 13, iter, pdata(iter) * 100);
endfor;
hold on;
plot(pdata, '-b')