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, }
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, }
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() == {}