Example 51: Numitron Autoencoder

🧪 Example is still work in progress.

Introduction

% standard  , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
data(seg7, [0,0,0,0,0,0,0], [0,0,0,0,0,0,0]).
data(seg7, [1,1,1,1,1,1,0], [1,1,1,1,1,1,0]).
data(seg7, [0,1,1,0,0,0,0], [0,1,1,0,0,0,0]).
data(seg7, [1,1,0,1,1,0,1], [1,1,0,1,1,0,1]).
data(seg7, [1,1,1,1,0,0,1], [1,1,1,1,0,0,1]).
data(seg7, [0,1,1,0,0,1,1], [0,1,1,0,0,1,1]).
data(seg7, [1,0,1,1,0,1,1], [1,0,1,1,0,1,1]).
data(seg7, [1,0,1,1,1,1,1], [1,0,1,1,1,1,1]).
data(seg7, [1,1,1,0,0,0,0], [1,1,1,0,0,0,0]).
data(seg7, [1,1,1,1,1,1,1], [1,1,1,1,1,1,1]).
data(seg7, [1,1,1,1,0,1,1], [1,1,1,1,0,1,1]).
% alternatives 9, 7, 6, 1
data(seg7, [1,1,1,0,0,1,1], [1,1,1,1,0,1,1]).
data(seg7, [1,1,1,0,0,1,0], [1,1,1,0,0,0,0]).
data(seg7, [0,0,1,1,1,1,1], [1,0,1,1,1,1,1]).
data(seg7, [0,0,0,0,1,1,0], [0,1,1,0,0,0,0]).

show :-  data(seg7, X, _),
   numitron(X, 2), fail; true.

:- show.

Progress

plot :- length(H, 4), maplist(=(0), H),
   noise_train2(H, seg7, 7, 100, _, _).

:- plot.

Result

segment :- length(H, 4), maplist(=(0), H),
   noise_train(H, seg7, 7, 100, _, E),
   noise_recon(7, E, seg7, _, D),
   data(seg7, X, _), maplist(tree_current(X, 0), E, Y),
   maplist(tree_current(Y, 0), D, Z), numitron(Z, 2), fail; true.

:- segment.