def increment(a, max_number=None) -> Tuple[any, int]: if max_number is None: max_number = a + 1 max_tree_depth = get_max_tree_depth( max_number ) # as one is already represented by structure with 2 levels a_tree = number_to_tree(a, max_tree_depth, fillers, roles) a_tree_flattened = flattenize_per_tensor_representation(a_tree) keras_increment_network = build_increment_network( roles=roles, dual_roles=dual_basic_roles_case_1, fillers=fillers, max_depth=max_tree_depth) a_tree_flattened = a_tree_flattened.reshape( (1, *a_tree_flattened.shape, 1)) new_number = keras_increment_network.predict_on_batch( [a_tree_flattened]) new_number = new_number.reshape((*new_number.shape[1:], )) return (extract_per_level_tensor_representation_after_unshift( new_number, max_tree_depth, SINGLE_ROLE_SHAPE, SINGLE_FILLER_SHAPE), max_tree_depth)
def test_single_sum_2_0(self): max_number = 3 max_tree_depth = get_max_tree_depth(max_number) a = 2 b = 0 c, d = sum_numbers(a, b, max_tree_depth, roles, dual_basic_roles_case_1, fillers, number_sum_blocks=1) self.assertEqual(1, c) self.assertEqual(1, d)
def test_sum_0_3(self): max_number = 3 max_tree_depth = get_max_tree_depth(max_number) a = 0 b = 3 c, d = sum_numbers(a, b, max_tree_depth, roles, dual_basic_roles_case_1, fillers, number_sum_blocks=max_number) self.assertEqual(0, c) self.assertEqual(3, d)
tf.compat.v1.disable_eager_execution() # Input information fillers = np.array([ [7, 0, 0, 0, 0], # A ]) roles = np.array([ [10, 0], # r_0 [0, 5], # r_1 ]) dual_basic_roles_case_1 = np.linalg.inv(roles) order_case_active = ['A', ] MAX_NUMBER = 4 MAX_TREE_DEPTH = get_max_tree_depth(MAX_NUMBER) SINGLE_ROLE_SHAPE = roles[0].shape SINGLE_FILLER_SHAPE = fillers[0].shape # TPR-Inc Network a = 0 new_number_one = number_to_tree(a, MAX_TREE_DEPTH, fillers, roles) one_unshifted = flattenize_per_tensor_representation(new_number_one) keras_increment_network = build_increment_network(roles=roles, dual_roles=dual_basic_roles_case_1, fillers=fillers, max_depth=MAX_TREE_DEPTH) print('Built increment network') one_unshifted = one_unshifted.reshape((1, *one_unshifted.shape, 1))