Dear Intelligence Developers:
* I'm learning about nupic. My name is jiurl.
* I want nupic to learn ascii codes, and I want through this simple example to
watch how the spatialpooler working.
* The design of the sample is:
8 bits inputs.
One input is a ascii code. for example, 'A' { 0,1,0,0,0,0,0,1 }, 'B' {
0,1,0,0,0,0,1,0 }.
20 columns.
numActiveColumnsPerInhArea set to 3.
I think after some training, every ascii code will have a unique active columns
set.
* problems:
but I run the spatialpooler with a series of inputs.
I found two problems:
first, the differnt ascii codes, have the same active columns set.
second, the same ascii code's active column set have been changed after some
traning truns.
* My main demand:
I want spatialpooler to learn ascii code. How can I make it happen, or it
couldn't been done?
thanks thanks thanks for any help.
* a real run's result:
// inputs to train SpatialPooler.
vector< vector<int> > inputs = {
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,1,1,1 }, //O
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,0,0,1,0 }, //B
{ 0,1,0,0,0,0,1,1 }, //C
{ 0,1,0,0,0,1,0,0 }, //D
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,0,1,0,1 }, //E
{ 0,1,0,0,0,1,1,0 }, //F
{ 0,1,0,0,0,1,1,1 }, //G
{ 0,1,0,0,1,0,0,0 }, //H
{ 0,1,0,0,1,0,0,1 }, //I
{ 0,1,0,0,1,0,1,0 }, //J
{ 0,1,0,0,0,0,0,1 }, //A
{ 0,1,0,0,1,0,1,1 }, //K
{ 0,1,0,0,1,1,0,0 }, //L
{ 0,1,0,0,1,1,0,1 }, //M
{ 0,1,0,0,1,1,1,0 }, //N
{ 0,1,0,0,1,1,1,1 } //O
};
// just after SpatialPooler sp initialized.
// every column's Potential and Permanence
column 0: 0 0 1 1 0 1 1 0 0.00 0.00 0.09 0.08 0.00 0.00 0.09 0.00
column 1: 1 0 1 0 1 1 0 0 0.34 0.00 0.16 0.00 0.95 0.53 0.00 0.00
column 2: 0 0 1 1 0 1 0 1 0.00 0.00 0.48 0.08 0.00 0.44 0.00 0.43
column 3: 0 0 0 1 0 1 1 1 0.00 0.00 0.00 0.75 0.00 0.60 0.65 0.96
column 4: 0 1 1 1 0 1 0 0 0.00 0.10 0.03 0.07 0.00 0.10 0.00 0.00
column 5: 0 0 1 1 1 0 0 1 0.00 0.00 0.88 0.36 0.07 0.00 0.00 0.00
column 6: 1 1 0 0 1 0 0 1 0.04 0.99 0.00 0.00 0.11 0.00 0.00 0.08
column 7: 1 1 0 1 0 0 1 0 0.69 0.64 0.00 0.04 0.00 0.00 0.48 0.00
column 8: 1 0 1 0 0 1 0 1 0.79 0.00 0.78 0.00 0.00 0.60 0.00 0.45
column 9: 0 0 1 0 0 1 1 1 0.00 0.00 0.06 0.00 0.00 0.05 0.06 0.04
column 10: 1 1 1 0 0 0 1 0 0.68 0.94 0.09 0.00 0.00 0.00 0.50 0.00
column 11: 1 1 1 0 0 1 0 0 0.92 0.05 0.00 0.00 0.00 0.05 0.00 0.00
column 12: 1 0 0 1 1 1 0 0 0.07 0.00 0.00 0.55 0.00 0.75 0.00 0.00
column 13: 0 1 1 0 0 0 1 1 0.00 0.90 0.03 0.00 0.00 0.00 0.00 0.54
column 14: 0 0 1 0 0 1 1 1 0.00 0.00 0.08 0.00 0.00 0.90 0.00 0.03
column 15: 1 1 1 0 0 0 0 1 0.36 0.00 0.84 0.00 0.00 0.00 0.00 0.09
column 16: 0 1 0 0 1 1 1 0 0.00 0.69 0.00 0.00 0.88 0.25 0.41 0.00
column 17: 1 0 1 0 0 1 0 1 0.05 0.00 0.06 0.00 0.00 0.08 0.00 0.00
column 18: 0 1 0 0 1 1 0 1 0.00 0.06 0.00 0.00 0.07 0.06 0.00 0.00
column 19: 0 1 0 0 1 1 1 0 0.00 0.04 0.00 0.00 0.74 0.05 0.06 0.00
// the input and the active columns. this input is A's ascii code.
input 0: 0 1 0 0 0 0 0 1
column 10: 0.68 0.99 0.09 0.00 0.00 0.00 0.49 0.00
column 13: 0.00 0.95 0.00 0.00 0.00 0.00 0.00 0.59
column 16: 0.00 0.74 0.00 0.00 0.87 0.24 0.41 0.00
input 1: 0 1 0 0 0 0 0 1
column 10: 0.67 1.00 0.08 0.00 0.00 0.00 0.48 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.64
column 16: 0.00 0.79 0.00 0.00 0.86 0.23 0.40 0.00
input 2: 0 1 0 0 0 0 0 1
column 10: 0.66 1.00 0.07 0.00 0.00 0.00 0.48 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.69
column 16: 0.00 0.84 0.00 0.00 0.85 0.22 0.39 0.00
input 3: 0 1 0 0 0 0 0 1
column 10: 0.65 1.00 0.06 0.00 0.00 0.00 0.47 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.74
column 16: 0.00 0.89 0.00 0.00 0.84 0.22 0.38 0.00
input 4: 0 1 0 0 0 0 0 1
column 10: 0.64 1.00 0.05 0.00 0.00 0.00 0.46 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.79
column 16: 0.00 0.94 0.00 0.00 0.84 0.21 0.37 0.00
input 5: 0 1 0 0 0 0 0 1
column 10: 0.64 1.00 0.05 0.00 0.00 0.00 0.45 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.84
column 16: 0.00 0.99 0.00 0.00 0.83 0.20 0.37 0.00
input 6: 0 1 0 0 0 0 0 1
column 10: 0.63 1.00 0.04 0.00 0.00 0.00 0.44 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.89
column 16: 0.00 1.00 0.00 0.00 0.82 0.19 0.36 0.00
input 7: 0 1 0 0 0 0 0 1
column 10: 0.62 1.00 0.03 0.00 0.00 0.00 0.44 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.94
column 16: 0.00 1.00 0.00 0.00 0.81 0.18 0.35 0.00
input 8: 0 1 0 0 0 0 0 1
column 10: 0.61 1.00 0.00 0.00 0.00 0.00 0.43 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.99
column 16: 0.00 1.00 0.00 0.00 0.80 0.18 0.34 0.00
input 9: 0 1 0 0 0 0 0 1
column 10: 0.60 1.00 0.00 0.00 0.00 0.00 0.42 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.00 1.00
column 16: 0.00 1.00 0.00 0.00 0.80 0.17 0.33 0.00
// now the 'O', you can see diffrent active columns, that's good.
input 10: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.74 0.00 0.65 0.70 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.05 1.00
column 16: 0.00 1.00 0.00 0.00 0.85 0.22 0.38 0.00
input 11: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.74 0.00 0.70 0.75 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.10 1.00
column 16: 0.00 1.00 0.00 0.00 0.90 0.27 0.43 0.00
input 12: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.73 0.00 0.75 0.80 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.15 1.00
column 16: 0.00 1.00 0.00 0.00 0.95 0.32 0.48 0.00
input 13: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.72 0.00 0.80 0.85 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.20 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.37 0.53 0.00
input 14: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.71 0.00 0.85 0.90 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.25 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.42 0.58 0.00
input 15: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.70 0.00 0.90 0.95 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.30 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.47 0.63 0.00
input 16: 0 1 0 0 1 1 1 1
column 3: 0.00 0.00 0.00 0.70 0.00 0.95 1.00 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.35 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.52 0.68 0.00
// !!!
// problem 1: the active columns of input 'K', is {10, 13, 16}. it is same as
the active columns of input 'A'.
input 17: 0 1 0 0 1 0 1 1
column 10: 0.60 1.00 0.00 0.00 0.00 0.00 0.47 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.40 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.51 0.73 0.00
input 18: 0 1 0 0 1 0 1 1
column 10: 0.59 1.00 0.00 0.00 0.00 0.00 0.52 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.45 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.50 0.78 0.00
input 19: 0 1 0 0 1 0 1 1
column 10: 0.58 1.00 0.00 0.00 0.00 0.00 0.57 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.50 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.49 0.83 0.00
input 20: 0 1 0 0 1 0 1 1
column 10: 0.57 1.00 0.00 0.00 0.00 0.00 0.62 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.55 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.49 0.88 0.00
input 21: 0 1 0 0 1 0 1 1
column 10: 0.56 1.00 0.00 0.00 0.00 0.00 0.67 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.60 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.48 0.93 0.00
input 22: 0 1 0 0 1 0 1 1
column 10: 0.56 1.00 0.00 0.00 0.00 0.00 0.72 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.65 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.47 0.98 0.00
input 23: 0 1 0 0 0 0 1 0
column 10: 0.55 1.00 0.00 0.00 0.00 0.00 0.77 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.70 0.99
column 16: 0.00 1.00 0.00 0.00 0.99 0.46 1.00 0.00
input 24: 0 1 0 0 0 0 1 1
column 10: 0.54 1.00 0.00 0.00 0.00 0.00 0.82 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.75 1.00
column 16: 0.00 1.00 0.00 0.00 0.98 0.45 1.00 0.00
input 25: 0 1 0 0 0 1 0 0
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.74 0.99
column 14: 0.00 0.00 0.07 0.00 0.00 0.95 0.00 0.00
column 16: 0.00 1.00 0.00 0.00 0.98 0.50 0.99 0.00
input 26: 0 1 0 0 0 0 0 1
column 10: 0.53 1.00 0.00 0.00 0.00 0.00 0.81 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.73 1.00
column 16: 0.00 1.00 0.00 0.00 0.97 0.50 0.98 0.00
input 27: 0 1 0 0 0 1 0 1
column 8: 0.78 0.00 0.77 0.00 0.00 0.65 0.00 0.50
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.73 1.00
column 16: 0.00 1.00 0.00 0.00 0.96 0.55 0.98 0.00
input 28: 0 1 0 0 0 1 1 0
column 10: 0.52 1.00 0.00 0.00 0.00 0.00 0.86 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.78 0.99
column 16: 0.00 1.00 0.00 0.00 0.95 0.60 1.00 0.00
input 29: 0 1 0 0 0 1 1 1
column 3: 0.00 0.00 0.00 0.69 0.00 1.00 1.00 1.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.83 1.00
column 16: 0.00 1.00 0.00 0.00 0.94 0.65 1.00 0.00
input 30: 0 1 0 0 1 0 0 0
column 6: 0.04 1.00 0.00 0.00 0.16 0.00 0.00 0.07
column 16: 0.00 1.00 0.00 0.00 0.99 0.64 0.99 0.00
column 19: 0.00 0.09 0.00 0.00 0.79 0.04 0.05 0.00
input 31: 0 1 0 0 1 0 0 1
column 6: 0.03 1.00 0.00 0.00 0.21 0.00 0.00 0.12
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.82 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.63 0.98 0.00
input 32: 0 1 0 0 1 0 1 0
column 10: 0.52 1.00 0.00 0.00 0.00 0.00 0.91 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.87 0.99
column 16: 0.00 1.00 0.00 0.00 1.00 0.62 1.00 0.00
// !!!
// problem 2: the active columns of 'A' now is {6, 13, 16}. it originally is
{10, 13, 16}.
input 33: 0 1 0 0 0 0 0 1
column 6: 0.00 1.00 0.00 0.00 0.20 0.00 0.00 0.17
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.86 1.00
column 16: 0.00 1.00 0.00 0.00 0.99 0.61 0.99 0.00
input 34: 0 1 0 0 1 0 1 1
column 6: 0.00 1.00 0.00 0.00 0.25 0.00 0.00 0.22
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.91 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.61 1.00 0.00
input 35: 0 1 0 0 1 1 0 0
column 1: 0.33 0.00 0.15 0.00 1.00 0.58 0.00 0.00
column 6: 0.00 1.00 0.00 0.00 0.30 0.00 0.00 0.21
column 16: 0.00 1.00 0.00 0.00 1.00 0.66 0.99 0.00
input 36: 0 1 0 0 1 1 0 1
column 6: 0.00 1.00 0.00 0.00 0.35 0.00 0.00 0.26
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.90 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.71 0.98 0.00
input 37: 0 1 0 0 1 1 1 0
column 10: 0.51 1.00 0.00 0.00 0.00 0.00 0.96 0.00
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 0.95 0.99
column 16: 0.00 1.00 0.00 0.00 1.00 0.76 1.00 0.00
input 38: 0 1 0 0 1 1 1 1
column 6: 0.00 1.00 0.00 0.00 0.40 0.00 0.00 0.31
column 13: 0.00 1.00 0.00 0.00 0.00 0.00 1.00 1.00
column 16: 0.00 1.00 0.00 0.00 1.00 0.81 1.00 0.00
* end.