예제 #1
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_out_prediction():
    setting = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    setting.debug = True

    setting.min_overlap = 1
    setting.desired_local_activity = 1
    setting.connected_pct = 1
    setting.xinput = 4
    setting.yinput = 4
    setting.potential_radius = 2
    setting.xdimension = 4
    setting.ydimension = 1
    setting.initial_inhibition_radius = 2

    r = Region(setting, SimpleMapper())
    inp = [[1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0]]
    r.step_forward(inp)
    res = r.out_prediction([[1, 0, 1, 0]])
    # print(res)
    for i in range(len(res)):
        for j in range(len(res[0])):
            if inp[i][j] ==1:
                assert res[i][j] > 0
예제 #2
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_htm_constructuion():
    setting = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    setting.debug = True

    setting.min_overlap = 1
    setting.desired_local_activity = 1
    setting.connected_pct = 1
    setting.xinput = 5
    setting.yinput = 1
    setting.potential_radius = 2
    setting.xdimension = 4
    setting.ydimension = 1
    setting.initial_inhibition_radius = 2

    r = Region(setting, SimpleMapper())

    assert len(r.get_columns()) == 4
    assert r.get_input_h() == 1
    assert r.get_input_w() == 5
    assert len(r.get_columns()[0].get_neighbors()) == 2
    v = r.get_columns()[r.get_columns()[0].get_neighbors()[0]].get_coord()
    assert v[0] == 1.0 and v[1] == 0.0
예제 #3
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_overlap_on_ones():
    inp = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    settings = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    settings.debug = True

    settings.min_overlap = 1
    settings.desired_local_activity = 1
    settings.connected_pct = 1
    settings.xinput = len(inp)
    settings.yinput = 1
    settings.potential_radius = 2
    settings.xdimension = 4
    settings.ydimension = 1

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)

    groundtruth = [5, 5, 5, 5]
    for i in range(len(groundtruth)):
        assert overlaps[i] == groundtruth[i]

    settings.potential_radius = 2
    settings.xdimension = 1
    settings.ydimension = 1

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)

    groundtruth = [5]
    for i in range(len(groundtruth)):
        assert overlaps[i] == groundtruth[i]

    settings.potential_radius = 2
    settings.xdimension = 16
    settings.ydimension = 1

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)

    groundtruth = [3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3]
    for i in range(len(groundtruth)):
        assert overlaps[i] == groundtruth[i]
예제 #4
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_debug_false():
    setting =  SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    setting.debug = False

    setting.min_overlap = 1
    setting.desired_local_activity = 1
    setting.connected_pct = 1
    setting.xinput = 4
    setting.yinput = 4
    setting.potential_radius = 2
    setting.xdimension = 4
    setting.ydimension = 1
    setting.initial_inhibition_radius = 2

    r = Region(setting, SimpleMapper())
    inp = [[1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0]]
    res = r.step_forward(inp)
    print(res)
    assert len(list(filter(lambda x: x[0] == True, res)))>0
예제 #5
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_ladder():
    # FileOutputStream fos=new FileOutputStream("out.txt")
    #  PrintWriter pw=new PrintWriter(fos)

    # FileOutputStream fos_in=new FileOutputStream("in.txt")
    # PrintWriter pw_in=new PrintWriter(fos_in)

    w = 15
    h = 15
    begx = 0
    begy = 0
    step_size = 5

    map = [[0 for j in range(h)] for i in range(w)]
    inp = [0 for i in range(h * w)]
    STEPS = 5
    TOTAL_STEPS = 1000
    STEP_SIZE = STEPS

    setting = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    setting.debug = True

    setting.min_overlap = 1
    setting.desired_local_activity = 1
    setting.connected_pct = 1
    # setting.connectedPerm=0.01
    setting.xinput = w
    setting.yinput = h
    setting.potential_radius = 2
    setting.xdimension = 3
    setting.ydimension = 3
    setting.initial_inhibition_radius = 2

    # pw.print(setting.xDimension + " ")
    # pw.print(setting.yDimension + " ")
    # pw.print(TOTAL_STEPS)
    # pw.println()
    #
    # pw_in.print(setting.xDimension + " ")
    # pw_in.print(setting.yDimension + " ")
    # pw_in.print(TOTAL_STEPS)
    # pw_in.println()

    r = Region(setting, VerySimpleMapper())

    x = begx
    y = begy
    for i in range(x, x + step_size):
        for j in range(y, y + step_size):
            map[i][j] = 1

    for step in range(TOTAL_STEPS):
        print("DATA:\n")
        index = 0
        for k in range(w):
            for m in range(h):
                inp[index] = map[k][m]
                # pw_in.print(in[index])
                print(str(inp[index]) + " ", end="", flush=True)
                index += 1
            print()
            # pw_in.println()
        print()
        # pw_in.println()

        for i in range(x, x + step_size):
            for j in range(y, y + step_size):
                if i < len(map) and j < len(map[0]):
                    map[i][j] = 0

        x = x + STEP_SIZE
        y = y + STEP_SIZE
        if x > w:
            x = 0
            y = 0

        for i in range(x, x + step_size):
            for j in range(y, y + step_size):
                if i < len(map) and j < len(map[0]):
                    map[i][j] = 1

        for c in r.get_columns():
            c.set_is_active(False)

        ov = r.update_overlaps(r.get_columns(), inp)
        r.inhibition_phase(r.get_columns(), ov)
        r.learning_phase(r.get_columns(), inp, ov)
        cols = r.get_columns()

        for i in range(setting.xdimension):
            for j in range(setting.ydimension):
                state = 1 if find_by_colxy(cols, i, j).get_is_active() else 0
                print(str(state) + " ", end="", flush=True)
                # pw.print(state)
                # pw.print(" ")
            print()
예제 #6
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_inhibition_phase():
    inp = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]

    settings = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    settings.debug = True

    settings.min_overlap = 1
    settings.desired_local_activity = 1
    settings.connected_pct = 1
    settings.xinput = len(inp)
    settings.yinput = 1
    settings.potential_radius = 2
    settings.xdimension = 4
    settings.ydimension = 1
    settings.initial_inhibition_radius = 1

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)

    cols = r.inhibition_phase(r.get_columns(), overlaps)
    assert len(cols) == 2

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)

    r.inhibition_phase(r.get_columns(), overlaps)
    # ожидаем разные результаты теста из-за рандомного шафла
    cols = r.inhibition_phase(r.get_columns(), overlaps)
    assert len(cols) == 2
    cols = r.inhibition_phase(r.get_columns(), overlaps)
    assert len(cols) == 2
    cols = r.inhibition_phase(r.get_columns(), overlaps)
    assert len(cols) == 2
    cols = r.inhibition_phase(r.get_columns(), overlaps)
    assert len(cols) == 2
예제 #7
0
파일: tests.py 프로젝트: cog-isa/htm-core
def testUpdateSynapses():
    inp = [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    settings = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    settings.debug = True

    settings.min_overlap = 1
    settings.desired_local_activity = 1
    settings.connected_pct = 1
    settings.xinput = len(inp)
    settings.yinput = 1
    settings.potential_radius = 2
    settings.xdimension = 4
    settings.ydimension = 1
    settings.initial_inhibition_radius = 1
    settings.permanence_inc = 0.2
    settings.permanence_dec = 0.2
    r = Region(settings, SimpleMapper())

    overlaps = r.update_overlaps(r.get_columns(), inp)
    r.inhibition_phase(r.get_columns(), overlaps)

    r.get_columns()[0].get_potential_synapses().get(4).set_permanence(0.5)
    r.update_synapses(r.get_columns(), inp)
    v = r.get_columns()[0].get_potential_synapses().get(4).get_permanence()
    assert v == 0.7

    r.get_columns()[0].get_potential_synapses().get(5).set_permanence(0.5)
    r.update_synapses(r.get_columns(), inp)
    v = r.get_columns()[0].get_potential_synapses().get(5).get_permanence()
    assert v == 0.3
예제 #8
0
파일: tests.py 프로젝트: cog-isa/htm-core
def test_update_active_duty_cycle():
    inp = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    settings = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 4, connected_pct = 1,
                               connected_perm = 0.01, xinput = 3, yinput = 3, potential_radius = 4, xdimension = 3,
                               ydimension = 3, initial_inhibition_radius = 1, permanence_inc = 0.1, permanence_dec = 0.1,
                               max_boost = 2, min_duty_cycle_fraction = 0.2)
    settings.debug = True

    settings.min_overlap = 1
    settings.desired_local_activity = 1
    settings.connected_pct = 1
    settings.xinput = len(inp)
    settings.yinput = 1
    settings.potential_radius = 2
    settings.xdimension = 4
    settings.ydimension = 1
    settings.initial_inhibition_radius = 1

    r = Region(settings, SimpleMapper())

    overlaps = r.update_overlaps(r.get_columns(), inp)
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())

    assert len(r.get_active_duty_cycles()) == len(r.get_columns())
    assert r.get_active_duty_cycles()[0] == 4

    inp = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]

    r = Region(settings, SimpleMapper())
    overlaps = r.update_overlaps(r.get_columns(), inp)
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())
    r.inhibition_phase(r.get_columns(), overlaps)
    r.update_active_duty_cycle(r.get_columns())

    assert len(r.get_active_duty_cycles()) == len(r.get_columns())
    assert r.get_active_duty_cycles()[0] == 0
    assert r.get_active_duty_cycles()[1] == 3
    assert r.get_active_duty_cycles()[2] == 3
    assert r.get_active_duty_cycles()[3] == 2
예제 #9
0
from spatialPooler.sp_region import Region as SpatialPoolerRegion
from apps.settings import *

input_settings = InputSettings(SCALE=1, STEPS_NUMBER=300)
generator = ListImages(12)

spatial_settings = SpatialSettings(debug = False, min_overlap = 1, desired_local_activity = 2, connected_pct = 1,
                           connected_perm = 0.1, xinput = generator.square_size, yinput = generator.square_size,
                           potential_radius = 4, xdimension = 12, ydimension = 12, initial_inhibition_radius = 2,
                           permanence_inc = 0.02, permanence_dec = 0.1, max_boost = 2, min_duty_cycle_fraction = 0.2)

temporal_settings = TemporalSettings(region_size=spatial_settings.xdimension, column_size=4, initial_permanence=0.5,
                                     dendrite_activate_threshold=1, dendrite_permanence_inc_delta=0.02,
                                     dendrite_permanence_dec_delta=-0.1, passive_time_to_active_threshold=1000,
                                     synapse_threshold=0.45)


spatial_pooler_region = SpatialPoolerRegion(spatial_settings=spatial_settings, mapper=SquareMapperAutoRadius())
temporal_pooler_region = TemporalPoolerRegion(temporal_settings=temporal_settings)

for i in range(input_settings.STEPS_NUMBER):
    generator.out()
    outdata=spatial_pooler_region.step_forward(generator.get_data())
    print_matrix(to_binmatrix(outdata))
    temporal_pooler_region.step_forward(outdata)
    temporal_pooler_region.out_prediction()
    cols=temporal_pooler_region.columns
    imagined_input = spatial_pooler_region.out_prediction(cols, temporal_settings.region_size)

    generator.move()