def get_feature_deletion_results(Input_dimension ,Output_dimension ,array1,array2,mapping_scheme=1,max_value=0):

	batch_error = []
	sample_size = Input_dimension/100
	reduced_input_dim = Input_dimension/1.5
	demo_operator = operator(input_dim=Input_dimension, output_dim=Output_dimension, mapping_scheme=mapping_scheme)
	demo_operator.mapping.bits = default_bits
	demo_operator.mapping.map = default_maps
	batch_inner_product1 = []
	batch_inner_product2 = []
	while Input_dimension >= reduced_input_dim:
		# print ("epoch1:::Input Dimenson::",Input_dimension)
		batch_feature_size = int(sample_size)
		batch_positions = get_adversarial_positions(demo_operator,batch_feature_size)
		Input_dimension-=batch_feature_size

		array1,array2 = demo_operator.batch_delete_feature(batch_positions,array1,array2)
        # print("batch feature deletion done....")
        # print("arr1:",array1)
        # print("arr2:",array2)
		inner_product1, inner_product2 = demo_operator.inner_product(array1, array2)
		error = abs(inner_product1-inner_product2)
		print ("inners products:",inner_product1,inner_product2)
		print("error:", error)
		batch_error.append(error)
		batch_inner_product1.append(inner_product1)
		batch_inner_product2.append(inner_product2)
		# print ("Mapping scheme :",mapping_scheme,"::")
		# print (demo_operator.get_feature_count())
		

	return batch_error,batch_inner_product1,batch_inner_product2,array1,array2
def main():
    input_size, output_size = 50000, 2000
    demo_operator = operator(input_dim=input_size, output_dim=output_size)

    arr1 = np.random.randint(0, high=50, size=input_size)
    arr2 = np.random.randint(0, high=50, size=input_size)

    #print("Array1:", arr1)
    #print("Array2:", arr2)

    demo_operator.inner_product(arr1, arr2)

    arr1 = np.insert(arr1, 1, 2)
    arr2 = np.insert(arr2, 1, 3)

    demo_operator.insert_feature(1, arr1, arr2)

    demo_operator.inner_product(arr1, arr2)

    arr1 = np.delete(arr1, 0)
    arr2 = np.delete(arr2, 0)

    demo_operator.delete_feature(0, arr1, arr2)

    demo_operator.inner_product(arr1, arr2)
def batch_feature_deletion_error(Input_dim=500,Output_dim=30,rate=10,array1=[],array2=[],mapping_scheme=1,max_val=1):
    batch_error = []
    sample_size = Input_dim/100
    reduced_input_dim = Input_dim/4
    demo_operator = operator(input_dim=Input_dim, output_dim=Output_dim, mapping_scheme=mapping_scheme)
    batch_inner_product1 = []
    batch_inner_product2 = []
    while Input_dim >= reduced_input_dim:
        print ("epoch1:::Input Dimenson::",Input_dim)
        batch_feature_size = int(sample_size)
        batch_positions = []
        batch_value1 = []
        batch_value2 = []
        for i in range(batch_feature_size):
            batch_positions.append(Input_dim-1)
            batch_value1.append(random.randint(0,max_val))
            batch_value2.append(random.randint(0,max_val))
            Input_dim -= 1

        array1,array2 = demo_operator.batch_delete_feature(batch_positions,array1,array2)
        # print("batch feature deletion done....")
        # print("arr1:",array1)
        # print("arr2:",array2)
        inner_product1, inner_product2 = demo_operator.inner_product(array1, array2)
        error = abs(inner_product1-inner_product2)
        print ("inners products:",inner_product1,inner_product2)
        print("error:", error)
        batch_error.append(error)
        batch_inner_product1.append(inner_product1)
        batch_inner_product2.append(inner_product2)

    return batch_error,batch_inner_product1,batch_inner_product2,array1,array2
Example #4
0
def get_remap_results(Input_dimension, Output_dimension, array1, array2,
                      mapping_scheme):
    batch_error = []
    batch_time = []
    sample_size = Input_dimension / 50
    reduced_input_dim = int(Input_dimension * 2)
    demo_operator = operator(input_dim=Input_dimension,
                             output_dim=Output_dimension,
                             mapping_scheme=mapping_scheme)
    # demo_operator.mapping.bits = default_bits
    # demo_operator.mapping.map = default_maps
    batch_inner_product1 = []
    batch_inner_product2 = []
    while Input_dimension <= reduced_input_dim:
        # print ("epoch1:::Input Dimenson::",Input_dimension)

        batch_feature_size = int(sample_size)
        batch_positions = get_adversarial_positions(demo_operator,
                                                    batch_feature_size)
        Input_dimension += batch_feature_size
        feature1 = np.random.normal(0, 1, size=batch_feature_size)
        feature2 = np.random.normal(0, 1, size=batch_feature_size)

        t1 = time.time()
        array1, array2 = demo_operator.batch_insert_feature(
            batch_positions, array1, array2, feature1, feature2)
        # print("batch feature deletion done....")
        # print("arr1:",array1)
        # print("arr2:",array2)
        fresh_operator = operator(input_dim=Input_dimension,
                                  output_dim=Output_dimension,
                                  mapping_scheme=mapping_scheme)
        inner_product1, inner_product2 = fresh_operator.inner_product(
            array1, array2)
        t2 = time.time()
        error = abs(inner_product1 - inner_product2)
        # print ("inners products:",inner_product1,inner_product2)
        # print("error:", error)
        batch_error.append(error)
        batch_time.append(t2 - t1)
        batch_inner_product1.append(inner_product1)
        batch_inner_product2.append(inner_product2)
        # print ("Mapping scheme :",mapping_scheme,"::")
        # print (demo_operator.get_feature_count())

    return batch_error, batch_time, batch_inner_product1, batch_inner_product2, array1, array2
Example #5
0
def get_inner_product_results(array1, array2, input_dimension, output_dimension):
	i = 10
	avg_inner_product1, avg_inner_product2 = 0, 0
	while i > 0:
		demo_operator = operator(input_dim=input_dimension, output_dim=output_dimension, mapping_scheme = 3)
		inner_product1, inner_product2 = demo_operator.inner_product(array1, array2)

		avg_inner_product1+=inner_product1
		avg_inner_product2+=inner_product2

		i-=1
	
	avg_inner_product1/=10
	avg_inner_product2/=10

	return avg_inner_product1, avg_inner_product2
Example #6
0
def sample_error(N, M):
    sample_size = 100
    arr1 = np.random.randint(0, high=N * 2, size=N)
    arr2 = np.random.randint(0, high=N * 2, size=N)
    average_sample_error = 0
    for i in range(sample_size):
        demo_operator = operator(N, M)

        inner_product1, inner_product2 = demo_operator.inner_product(
            arr1, arr2)

        average_sample_error += ((inner_product1 - inner_product2)**2)

    average_sample_error /= sample_size
    average_sample_error = average_sample_error**0.5

    return average_sample_error