Example #1
0
def test_incubator_create_pattern_2x3():
    incubator = Incubator(get_conf(
        UNIT_INPUT_HEIGHT=2,
        UNIT_INPUT_WIDTH=3,
        INCUBATOR_READY_SAMPLE_WEIGHT=1,   # doesn't create patterns
        INCUBATOR_IMPULSE_ACTIVITY_THRESHOLD=0.5,
        INCUBATOR_MIN_SAMPLE_IMPULSES=1,
        INCUBATOR_NEW_PATTERN_IMPULSE_WEIGHT=0.7,
        INCUBATOR_NEW_PATTERN_SIMILAR_SAMPLES_ACTIVITY=0.6,
    ))
    result = incubator.add(Matrix([
        [0.0, 1.0, 0.0],
        [1.0, 0.0, 1.0],
    ]))
    assert result == [
        Matrix([
            [0.0, 0.7, 0.0],
            [0.0, 0.0, 0.7],
        ]),
        Matrix([
            [0.0, 0.7, 0.0],
            [0.7, 0.0, 0.0],
        ])
    ]
    samples = incubator.get_samples()
    assert samples == {
        (None, 0): 0.5,
        (None, 2): 0.5,
        (1, None): 0.5,
    }
Example #2
0
def test_incubator_create_samples_min_impulses_filter():
    incubator = Incubator(get_conf(
        INCUBATOR_READY_SAMPLE_WEIGHT=999,   # doesn't create patterns
        INCUBATOR_IMPULSE_ACTIVITY_THRESHOLD=0.5,
        INCUBATOR_MIN_SAMPLE_IMPULSES=2,
    ))
    result = incubator.add(Matrix([
        [0.0, 1.0],
        [1.0, 0.0],
    ]))
    assert result == []
    assert incubator.get_samples() == {
        (1, 0): 1.0,
    }
Example #3
0
def test_incubator_create_pattern_from_several_samples():
    incubator = Incubator(get_conf(
        INCUBATOR_READY_SAMPLE_WEIGHT=0.9,
        INCUBATOR_IMPULSE_ACTIVITY_THRESHOLD=0.5,
        INCUBATOR_MIN_SAMPLE_IMPULSES=1,
        INCUBATOR_NEW_PATTERN_IMPULSE_WEIGHT=0.7,
        INCUBATOR_NEW_PATTERN_SIMILAR_SAMPLES_ACTIVITY=0.3,
    ))
    result = incubator.add(Matrix([
        [0.0, 1.0],
        [1.0, 0.0],
    ]))

    # braking add (0.7, sim_weight / top_weight * base_weight)
    value = (0.7 + 0.3 * (0.5 / 1.0 * 0.7))

    assert result == [
        Matrix([
            [0.0, value],
            [value, 0.0],
        ])
    ]
    assert incubator.get_samples() == {}