Esempio n. 1
0
def test_mutual_information_and_min_nonzero_count():
    print('\n' + "*" * 20 + '\ntest_mutual_information_and_min_nonzero_count')
    with tf.device('/gpu:0'):
        #         rand_vec = tf.random_normal([1, 100000000])
        #         rand_vec_2 = tf.random_normal([1, 100000000])
        #         max_mutual_info_activations = tf.concat([rand_vec, -rand_vec], 0)
        #         min_mutual_info_activations = tf.concat([rand_vec, rand_vec_2], 0)
        real_activatons = tf.random_normal([10, 16 * 10**6])
        activations = real_activatons
        value_axis = -1
        cross_axis = -2
        num_bins = 100
        range_ = [-2., 2.]
        mutual_info, min_num_events = tensors.mutual_information_and_min_nonzero_count(
            activations,
            value_axis,
            cross_axis,
            num_bins,
            range_,
            max_sample_size_per_iteration=2 * 10**4,
        )
        hists = tensors.hist_1d_loop(activations, num_bins, [-2., 2.], -1,
                                     10**6)
        entropy = tensors.entropy_MM_from_hist(hists, value_axis)
    config = tf.ConfigProto(allow_soft_placement=True)
    config.gpu_options.allow_growth = True
    run_options = tf.RunOptions(report_tensor_allocations_upon_oom=True)
    with tf.Session(config=config) as sess:
        entropy, mutual_info, min_num_events = sess.run(
            [entropy, mutual_info, min_num_events],
            options=run_options,
        )
        print('entropy:\n', entropy)
        print('\nmutual_info:\n', mutual_info)
        print('\nmin_num_events:\n', min_num_events)
Esempio n. 2
0
def test_hist_1d_loop():
    print('\n' + "*" * 20 + '\ntest_hist_1d_loop')
    values = tf.random_normal([10, 1000, 3])
    num_bins = 20
    range_ = [-3., 3.]
    axis = 1
    max_sample_size_per_iteration = 10
    hist = tensors.hist_1d_loop(values, num_bins, range_, axis,
                                max_sample_size_per_iteration)
    with tf.Session() as sess:
        print(sess.run(hist))
Esempio n. 3
0
def test_mean_mutual_information_and_min_nonzero_count_4():
    print('\n' + "*" * 20 +
          '\ntest_mean_mutual_information_and_min_nonzero_count')
    distr = [.0, .25, .25, .25, .25]
    borders = [[float(i), float(i + 1)] for i in range(5)]
    with tf.device('/gpu:0'):
        #         rand_vec = tf.random_normal([1, 100000000])
        #         rand_vec_2 = tf.random_normal([1, 100000000])
        #         max_mutual_info_activations = tf.concat([rand_vec, -rand_vec], 0)
        #         min_mutual_info_activations = tf.concat([rand_vec, rand_vec_2], 0)
        activations = tf.placeholder(tf.float32)
        value_axis = -2
        cross_axis = -1
        num_bins = 5
        range_ = [-0., 5.]
        mutual_info, mean_mutual_info, min_num_events = tensors.mean_mutual_information_and_min_nonzero_count(
            activations,
            value_axis,
            cross_axis,
            num_bins,
            range_,
            max_sample_size_per_iteration=2 * 10**4,
        )
        hists = tensors.hist_1d_loop(activations, num_bins, range_, value_axis,
                                     10**6)
        entropy = tensors.entropy_MM_from_hist(hists, value_axis)
    config = tf.ConfigProto(allow_soft_placement=True)
    config.gpu_options.allow_growth = True
    run_options = tf.RunOptions(report_tensor_allocations_upon_oom=True)
    with tf.Session(config=config) as sess:
        for i in [50, 100, 200, 400, 1000, 2000, 5000, 10000]:
            real_activations = 0.5 * np.array([[
                tensors.sample_from_distribution_continuous(distr, borders)
                for _ in range(i)
            ] for _ in range(4)] + np.array([[
                tensors.sample_from_distribution_continuous(distr, borders)
                for _ in range(i)
            ]] * 4)).transpose()
            entropy_r, mutual_info_r, mean_mutual_info_r, min_num_events_r = sess.run(
                [entropy, mutual_info, mean_mutual_info, min_num_events],
                options=run_options,
                feed_dict={activations: real_activations})
            print('\n' + '#' * 20)
            print("number of points:", i)
            print('entropy:\n', entropy_r)
            print('\nmutual_info:\n', mutual_info_r)
            print('\nmean_mutual_info:\n', mean_mutual_info_r)
            print('\nmin_num_events:\n', min_num_events_r)