►
From YouTube: BHTMS - Potential Pool and Permanences TDD
Description
Broadcasted live on Twitch -- Watch live at https://www.twitch.tv/rhyolight_
A
A
B
B
B
A
A
B
B
B
A
B
B
A
A
A
A
B
B
B
A
B
B
B
B
B
A
B
B
B
A
B
B
B
A
A
B
B
A
B
A
A
A
A
B
B
B
A
B
B
B
B
B
B
This
is
a
pool
for
a
specific
mini
column
and
that's
what
we're
going
to
turn
back
and
now
we're
going
to
do
the
same
thing
essentially
for
let's
use
I
and
J,
because
that's
like
the
quintessential
count
numbers
they're
always
do
it
for
2d
array,
movement
and
j
j
less
than
this
dot,
ops,
dot
input
count.
So
what
I
called
it
input
count.
B
B
We
have
to
actually
look
through
and
make
sure
that
each
index,
so
this
is
a
hundred
percent
connected,
so
every
induction
should
match
so
now
this
is
going
to
fail
because
I
doesn't
equal
zero,
but
now
I'm
gonna
do
this
wrong
first,
and
because,
if
I
put
a
J
here,
that's
that's
not
now.
That
is
what
I
want.
If
I
put
an
eye
here,
it
should
fail
actually
I
think
both
of
them
will
work.
B
A
B
So
let's
do
one
with
less
than
a
hundred
per
second
activity
and
and
for
tests.
I
do
not
mind
a
little
replication.
In
fact,
I
think
it's
almost
better
to
have
some
replication
of
test
code,
because
then
you
can
go
straight
to
one
test
and
understand
the
whole
thing.
Okay.
So
let's
get
rid
of
this
one.
B
So
at
50%
connectivity
this
is
going
to
be
tricky
because
it's
like
random,
so
some
semi
random,
we
don't
know
which
indexes
are
going
to
be
included
in
which
art,
because
for
each
one
it's
a
50%
chance.
So
there
may
be
I
mean
there
should
be
there's
a
it'd,
be
a
distribution
around
50%
of
those
values.
So
first.
B
B
A
B
I'm
gonna
do
this
I'm
gonna
I'm
gonna,
put
my
spirit
s
time,
I'm
describing
so
the
input
count
connected
percent.
Now
it's
going
to
be
50
so
out
of
four
each
one
of
these
columns.
We
should
be
connected
to
about
fifty
input.
This
I
don't
know
what
the
error
is
going
to
be,
but
I
think
what
I'm
going
to
assert
on
is
that
there's
somewhere?
First
of
all
that
every
every
index
is
within
the
range?
B
Okay,
there's
a
couple
things
that
also
Janesville
indices
I'm
having
some
ideas
now,
all
and
C's
are
in
range
of
input,
space,
okay
and
we're
going
to
do
one
that
says
no
repeating
and
put
space
and
disease,
something.
B
B
B
I've
got
both
of
them,
there's
a
close
to
assertion
to
like
that
close
to,
and
you
can
give
it
oh
great
great,
so
I'll
use
that
when
we're
doing
the
fuzzy
thing,
but
for
this
this
is
an
exact
and
what
I'll
do
is
I.
Think
there's
a
way.
Can
you
give
any
of
these
will
index
out
of
input
range
I
think
you
should
be
able
to
specify
that
and
I'll
give
you
an
error
message:
yeah
pull
the
index
out
of
a
big
range
purpose:
okay,.
B
B
B
B
B
B
B
A
B
A
B
A
A
A
A
B
B
B
B
Oh
I
already
did
that,
so
this
would
be
the
is
like
close
to
sir.
It
was
it
close
close
to
so
I'm.
Assuming
we're
going
to
say
the
coupie
length
is
close
to
emphasize
divided
by
2
or
x,
the
connected
percent
or
something
input
input
count
times.
Let's
say
connected
percent
that
way
we
can
change
it
later
connected
percent
times.
B
A
B
B
It's
gonna
break
things,
but
no
I
won't
break
anything
yet
so
then
we
could
just
say
connected
percent
here
we
don't
have
to
and
then
so.
The
Delta
is
also
so
I'm
gonna
make
a
delta
shoot.
I,
don't
know
it's
something
input
count.
Ten
percent
I,
don't
know
and
foot
count
times
point
one.
Let's
see
what
happens?
B
B
B
B
B
So
I
don't
want
to
do
that.
David
I
want
to
keep
this
really
really
explicit,
so
even
if,
if
maybe
we'll
come
back
and
refactor
later,
but
especially
during
the
construction
of
all
of
this
logic,
I
want
to
be
really
explicit
and
and
I
think
this.
This
is
pretty
explicit,
so
this
is
exactly
why
we
would
create
a
potential
pool
we're
above
the
connected
percent,
so
I'm.
B
A
B
B
B
A
B
A
B
A
B
B
B
B
B
B
A
B
B
B
A
B
B
All
is
good,
ok,
alright.
So
just
to
sum
up
where
we're
at
well
you've
got
a
spatial
Pooler
when
creating
potential
pools.
100%
connectivity
contains
all
the
pool
indices
contain
it
contains
such
a
pool
and
the
Seas
will
same
so
that's
pretty
calm
count
fully
capable
of
insane
times
in
its
face.
Each
pool
index
should
match
input
space
index.
B
B
B
A
B
A
B
B
Good,
this
is
good.
What
else
do
we
need
to
test
so
I
mean
we're
writing
way
more
code
than
our
test
code.
Then
we
are
a
real
code,
which
is
what
which
is
good,
which
is
what
we
should
be
doing.
So
we've
got
one
the
case
with
100%
connectivity.
We've
got
the
case
with
less
and
then
we
go
through
all
of
those
cases.
B
B
B
A
B
B
B
B
B
So
one
thing:
okay,
so
I
know
I
know
if
something
we
need
to
do,
and
this
is
an
API
thing
when
we
create
the
spatial
cooler,
the
potential
pool
should
already
excuse
me
should
already
be
created.
We
want
to
make
sure
there's
another
test.
Here's
another
ties
to
secure
one
we
want
to
it,
doesn't
matter
the
connectivity
triple
first
money,
column,
I,
think,
I.
Think.
B
All
right,
so
this
should
be
easy.
It
doesn't
matter
which
now
I'm
gonna
use
one
with
less
connectivity,
because
that
will
because
that,
if
they're
100
percent,
all
they
will
always
be
the
same.
But
but
let's
say
central
pools,
let's
call
it
less
than
then
fully
connected.
Be
very
explicit.
Are
always
the
same.
So.
B
B
B
B
So
I'm
gonna
change,
this
function,
I'm
gonna
call
it
I'm
gonna,
make
it
an
underscore
function,
I'm
gonna
say,
create
potential
pools
and
then
I'm
gonna
say
this
kind
of
show,
pools
and
again
I.
Don't
know
what
the
way
to
do
this,
but
this
is
the
way
I
always
do
it
as
JavaScript
still
loosey-goosey.
If
there's.
B
Item
potent
denoting
an
element
of
a
set
which
is
unchanged
in
value
and
multiplied
or
otherwise
operated
on
by
itself.
That's
the
yeah!
That's
the
mathematical
explanation,
I
think
when
it's
using
a
programmatic
term,
it's
like
you
have
a
especially
in
the
service-oriented
architecture,
side
of
software.
If
you
have
a
service,
someone
calls
it
in
that's
idempotent.
It
means
it's
gonna.
It's
not
accumulating
anything.
It's
going
to
return
you
the
same
thing
every
every
time
you
call
it
it's
not
retaining
a
state
and
deciding
to
do
something
different.
B
B
Okay,
so
it's
like
Maggie
today
that
I'm
to
school
or
looks
like
it's
for
my
private
member
variables,
yeah,
that's
the
only
thing,
I'm
trust
Ryan.
Did
you
know
that
if
anybody
is
looking
at
this
code,
they
shouldn't
call
this
from
outside,
there's
a
better
like
Eknath
scripts
way
to
do
this,
you
can
declare
it
as
like
this
private,
okay.
B
B
B
B
B
B
Yeah
we're
done
testing
the
potential
pool.
We
do
need
to
assert
that.
However,
we
get
the
permanence
this
matches.
The
potential
pool
some
house,
like
the
size
of
the
permanence,
is
like,
if
I
ask
for
the
potential
pools,
it's
going
to
give
me
an
array
of
indices
to
an
input
space
which
many
column,
if
I
ask
for
the
permanence
is
going
to
give
me
an
array
for
each
mini
column
of
arrays,
which
is
weights
okay.
So
it's.
B
B
B
Yeah,
this
is
a
tricky
bit
because
it's
not
linked
to
the
index
here.
It's
linked
to
the
pool
and
you
have
to
get
the
pool
to
get
the
input
index
this
permanence
is
associated
with.
So
now
we
need
to
decide
what
exactly
do
we
want
this?
To
look
like
it's
almost
like
permanence
is
or
excuse
me.
Potential
pools
is
a
subset
of
what
you
want
to
do
when
you
get
the
permanence
is
what
you
have
to
establish
the
potential
pool
before
you
can
populate
the
permanent
sleep
relative.
All
points.
B
B
B
A
B
B
B
B
B
B
B
B
A
B
B
Okay,
I'm,
gonna,
I'm
gonna
set
this
back
because
I
don't
I,
don't
want
to
change
it
right
now
there
we
go,
get
permanent,
it's
not
a
function.
That's
that's
the
one!
So
now
we
have
to
write,
the
permanence
is
get
permanence
is
function,
okay,
so
I'm
gonna
do
the
same
thing.
Basically
that
I
did
before.
B
And
I'm
gonna
see,
the
thing
is:
if
you
call
get
permanence
is
from
step
to
step,
they
will
change
so
I
can't
write
the
same.
The
same
test,
compare
about
the
same
test
assertion
because,
as
learning
occurs,
will
change.
If
no
learning
is
occurring,
they
won't
change.
I,
don't
know
if
I
want
to
test
that
right
now,
but
I
will
I'll
definitely
add
get
permanence.
This
here
will
just
make
the
test
pass
so
far.
B
B
B
Running
into
some
term
issues-
and
he
confirms
hold
on
let's-
let's
change
this-
to
total
of
the
spa.
All
firms
hold
this
one
firm
you're
like
perms
for
this
mini
columns,
permanence
get
all
permanence
a--'s
for
these
size
count,
and
so
now
we're
not
actually
this
is.
This
is
stupid.
This
is
not
what
I
want
to
do.
I
have
to
use,
I
have
to
get
the
potentials,
get
back
potential
pores.
B
And
then
basically,
I
need
to
go
I
want
it
to
match
exactly
the
potential
polls,
because
if
I
did
it
this
other
way,
they
might
not,
they
might
not
bad
so
I
happened
so
I've
already
done.
The
calculation
I've
basically
established
a
pinch
of
bull's
eye
out
for
each
one
of
them.
I
have
to
create
this
value
so.
B
B
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
A
B
So
so
I'm
asserting
the
wrong
perms
here.
So
this
should
be
perms,
not
all
perms
I've,
already
already
doing
the
all
perms
comparison
here.
This
I'm
making
sure
that
individual
many
commas
permanence
is
are
mapped
to
the
input
that
should
have
to
see
him
as
a
boy
I.
Think
that's
right
have
some
naming
issues.
B
B
B
B
B
B
B
A
B
Then
we'll
go
to
building
HTM
systems
and
require
the
latest
version
of
the
release
and
put
this
in
place,
but
first
we
need
to
get
that
potential
permanent
start.
One
thing
before
I
go
because
we're
going
to
have
to
look
at
this
soon
enough
is
that
Bates
distribution
that
I
used
in
building
HTM
systems
and.
B
B
B
A
B
A
B
A
B
B
So
let
me
just
support
this
is
exporting
and
calling.
B
A
A
B
This
code,
so
I'm
gonna,
send
it
in
which
we
are
doing
here
or
we're
already
sending
it
end
which
I'm
calling
spread
and
then
there's
something
else
that's
outside
of
this.
So
all
we're
sending
into
this
is
in
so
I
want
to
basically
take
this
function.
I
could
just
use
d3
I
mean
honestly,
but
I'm
trying
to
prevent
going
into
other
libraries
for
things
so
just
because
I
want
it
to
be
really
clear.
What's
what's
happening
in
the
simple
HTML
page,
so
I
want
to
so
I
could
just
like.
B
B
A
A
A
B
Urban
hall
thing
also
takes
a
source
and
here's
the
end
like
here's,
the
function
you're
actually
calling
with
the
end
when
you
call
it
I
think,
and
it
returns
the
function.
This
is
what
does
it,
so
what
do
I
have
to
go
through
this
hoop
like
we're,
jumping
twice
you're
here?
What
is
going
on
in
here?
That's
not
going
on
in
there.
It's
divided,
it's
calling
it
and
dividing
by
hand
random
urban
hall.
A
B
So
maybe
I
will
I
mean
there's
one
easy
way
to
do
this
I
think.
Let
me
check
my
let
me
check
and
see
if
I'm
using
d3
anywhere
I
might
already
be
using
d3
in
this
code
base.
If
I
am
I
mean
I
might
as
well
continue
using
it
bounded
category
I
think
I
actually
did
use
it
for
some
of
the
scales
scaler
yeah.
A
B
B
Let's
just
Park
this
for
a
moment:
let's
just
Park
this
right
here
and
and
start
writing
a
little
bit
of
a
test.
So
how
am
I
going
to
test
this
but
tape?
So
here's
we're
testing
a
fully
connected.
Tentacles
are
the
same.
Let's
get
down
to
the
permits!
This
contains
many
column,
permanence,
it's
okay,
so
the
okay
one
thing
I
could
do
to
test.
This
is
the
average
of
all
of
the
connection
weights
should
be.
B
B
B
B
B
B
B
B
A
B
B
I
wonder
how
close
we
can
get
still
five
percent
Delta
yeah.
So
it's
a
little
it's
a
little
iffy,
so
that
does
work.
At
least
we
know
that
works,
but
that
doesn't
really
test
our.
It
doesn't
certainly
doesn't
test
that
we
have
a
normal
distribution.
So
now
what
we
can
do
to
test
there's
a
normal
distribution
as
we
can
sort
the
permanence
--is
and
then
assert
that
the
midpoint
is
after
we've
done
the
story.
B
B
B
B
Distribution,
I
guess
I'll
call
it
connection
distribution,
but
this
is
really
not
a
good
name.
It's
it's.
The
number
of
independent
variables
for
the
base
calculation,
but
lo
is
really
really
spread
out.
Hi
is
like
super
peaked,
so
somewhere
between
like
0
and
30,
is
what
I
typically
been
seeing
here.
B
So
if
I
send
it
one
and
then
I
and
then
I
put
in
place
the
if
I
don't
send
it
anything
and
I
put
in
place,
those
now
I
can
use
my
Bates
function.
I
have
to
have
a
center
again
distribution
center.
Let's,
let's
set
this
this
dot
Bates
center
equals
this
table,
stop
Bates
center
for
0.5,
because
we
want
it
to
be
the
center
of
the
weights
by
default.
I.
B
B
Going
to
get
so
I
don't
have
to
do
this
anymore.
This
connected
percent
thinks
they're
all
connected
the
ones
that
I'm
going
through
already
connected.
All
I'm
doing
is
calling
Bates
function
plus
a
center
I've
already
got
the
center,
but
I'm,
not
gonna
I'm,
not
gonna.
Do
the
center,
yet
I'm
not
going
to
do
the
center
yet
so
so
all
we
have
to
do
is
instead
of
math
dot
random.
We
just
call
this
dot
beats.
B
B
Now
so,
if
it's
completely
random,
there
should
be
essentially
the
same
amount
of
numbers
in
like
the
first
10%
of
the
range
as
the
minute
of
the
middle
of
10
percent
of
the
range.
If
it's
not
random,
you're
gonna
have
a
bomb
you
know,
so
we
want
to
get
to
the
point
where
have
a
ball
when
we
call
it
with
with
no
independent
variable
and
it
uses
one.
Let's
look
at
this
again,
let's
be
explicit
about
what
we're
doing
here.
B
B
B
Get
around
the
center
point:
that's
assuming
it's
default!
2.5
I
should
be
able
to
take
an
average
and
make
sure
that
that's
larger
than
that
an
average
there,
the
on
either
side
of
it.
Okay,
so
does
that
sound
like
a
reasonable
test
just
to
ensure
that
there
is
a
normal
distribution
or
some
distribution
going
on
that's
centered
around
a
center
point,
I
found
welcome
back
I.
B
B
A
B
B
B
A
B
B
B
B
B
B
A
B
A
A
B
B
B
B
B
It
well
that
line
is
the
red
line.
Is
the
connection
threshold?
It's
independent
from
the
base
distribution.
We
can
have
it
wherever
we
want,
wait,
a
minute,
here's
the
line.
This
is
the
line.
So
when
you
change
the
connection
threshold,
it
sort
of
operates
on
top
of
the
on
top
of
the
permanence
it's
so
you
can
have
that
threshold
wherever
you
want.
B
B
B
Person,
the
first
ten
is
going
to
be
way
different
than
the
last
ten
and
then
the
middle
10,
so
I
think
that's
what
I'm
that's
what
I
need
to
test
so
I
think
I'm
sort
of
on
the
right
track,
but
the
but
I
gotta
remember
that
the
histogram
is
a
representation
of
the
permanence.
Is
that
it's
not
there?
Not!
The
permanence
is
its
account
of
the
permanence.
Is
that
that
fit
into
the
right?
Bins:
okay,
like
so
I'm
close
I,
think
I'm
close
half
sample
index.
B
A
B
Okay,
so
they
should
off
by
default,
without
creating,
without
specifically
identifying
the
number
of
independent
variables
for
the
base
distribution.
They
should
all
be
basically
averaged
the
same.
They
should
all
be
pretty
much
the
same,
so
assert
close
close
to
so
when
I
say
D,
3
dot
mean
first
10%
or
it
isn't
it
didn't.
Copy
are
good
thanks.
B
Of
0.1
I
guess:
let's
see,
if
that,
let's
see
if
that
path
even
runs
okay,
so
it's
not
okay,
great,
so
they're,
totally
different,
totally
different.
Oh
I
guess
this
would
always
happen.
Wouldn't
it
because,
even
if
you
have
a
random
distribution,
I
mean
you
if
you
sort
them,
of
course,
the
high
values
are
going
to
be
way
different
than
the
low
values
right.
B
A
B
B
B
A
B
Plot
them
all
and
I
sort
them
that
should
be
like
digital
digital.
Basically,
I
mean
there's
gonna
be
a
lot
of
wiggle
room
here,
but
they
should
be
sorted
from
you
know
one
well.
Actually
it's
gonna
go
the
other
direction
right
if
I
sit
depends
on
how
I
saw
it,
but
it's
gonna
go
like
this
up
to
zero,
but
basically
a
linear
plot.
A
B
A
B
I'm
stuck
on
something
I
shouldn't
be
stuck
on
this.
This
isn't
something
I
should
be
stuck
on
and
I'm
starting
to
think.
It's
probably
because
I'm
having
a
hard
time
focusing
so
I
hope
you
guys
don't
mind
if
I
come
back
on
another
day
and
try
and
finish
this
up.
It's
only
there's
only
three
people
watching
anyway.
B
So
I
think
I'm
gonna
do
that
sorry,
David
David
I
think
I'm
gonna,
I'm
gonna
shut
this
stream
down
I'm
gonna.
Think
of
a
little
bit
on
this
offline
I'm
gonna
go
to
the
chiropractor
and
and
I'll
be
back.
Then
I'll
be
back
on
lines,
probably
definitely
Thursday
or
Friday.
Then
we'll
finish
this
out
at
least
the
permanence
of
potential
pools
and
put
them
into
diagram,
but
I
think
we're
pretty
close.
It's
just
I'm
having
a
hard
time
sealing
the
deal
right
now
and,
like
I,
said,
I.