def plot_reference_spiral_for_ICLR_paper(simulated_frames_output_dir,
                                         n_simulated_samples, n_iter):
    # Plot the reference graph for the ICLR paper.
    import debian_spiral
    original_spiral_samples = debian_spiral.sample(
        n_simulated_samples * n_iter, 0.0).reshape((1, -1, 2))
    write_simulated_samples_frames(
        original_spiral_samples,
        lambda i: os.path.join(simulated_frames_output_dir,
                               "original_spiral_samples_width_0.5.png"),
        window_width=0.5)
    write_simulated_samples_frames(
        original_spiral_samples,
        lambda i: os.path.join(simulated_frames_output_dir,
                               "original_spiral_samples_width_1.0.png"),
        window_width=1.0)
    write_simulated_samples_frames(
        original_spiral_samples,
        lambda i: os.path.join(simulated_frames_output_dir,
                               "original_spiral_samples_width_2.0.png"),
        window_width=2.0)


# plot_reference_spiral_for_ICLR_paper("/u/alaingui/Documents/tmp/14", 100, 100)

#  python dae_langevin_sampling.py $HOME/umontreal/denoising_autoencoder/plots/experiment_970584/results.pkl $HOME/Documents/tmp/1

# ffmpeg -i /u/alaingui/Documents/tmp/4/simulation_frame_%05d.png -vcodec mpeg4 /u/alaingui/Documents/tmp/4/sequence.avi
def plot_spiral_into_axes(axes):
    from matplotlib.lines import Line2D
    import debian_spiral
    N = 80
    spiral_samples = debian_spiral.sample(N, 0.0, want_sorted_data = True, want_evenly_spaced = True)
    for i in range(N-1):
        l = Line2D([spiral_samples[i,0],spiral_samples[i+1,0]],
                   [spiral_samples[i,1],spiral_samples[i+1,1]],
                   linestyle='--', linewidth=1.0, c='#f9a21d')
        axes.add_line(l)
def plot_spiral_into_axes(axes):
    from matplotlib.lines import Line2D
    import debian_spiral
    N = 80
    spiral_samples = debian_spiral.sample(N,
                                          0.0,
                                          want_sorted_data=True,
                                          want_evenly_spaced=True)
    for i in range(N - 1):
        l = Line2D([spiral_samples[i, 0], spiral_samples[i + 1, 0]],
                   [spiral_samples[i, 1], spiral_samples[i + 1, 1]],
                   linestyle='--',
                   linewidth=1.0,
                   c='#f9a21d')
        axes.add_line(l)
示例#4
0
    def compare_gradients(self, input_noise_scale = 1.0, use_spiral = False):

        if use_spiral:
            if not (self.mydae.n_visibles == 2):
                print "It doesn't make sense to ask to use the spiral if you don't have 2 input units."
            assert(self.mydae.n_visibles == 2)
            import debian_spiral
            N = 10
            (X0,Y0) = debian_spiral.sample(N, 0.0)
            X = numpy.vstack((X0,Y0)).T
        else:
            N = 10
            X = numpy.zeros((N, self.n_visibles))

        if input_noise_scale > 0:
            noise = numpy.random.normal(scale = input_noise_scale, size = X.shape)
        else:
            noise = numpy.zeros(X.shape)
        noisy_X = X + noise

        dae_grad_W, dae_grad_b, dae_grad_c = self.mydae.theano_gradients(self.mydae.W,
                                                                         self.mydae.b,
                                                                         self.mydae.c,
                                                                         noisy_X, X)
        ref_grad_W, ref_grad_b, ref_grad_c = reference_gradients(self.mydae.W,
                                                                 self.mydae.b,
                                                                 self.mydae.c,
                                                                 noisy_X, X)

        print "--- ref ---"
        print ref_grad_W
        print ref_grad_b
        print ref_grad_c
        print "--- dae ---"
        print dae_grad_W
        print dae_grad_b
        print dae_grad_c

        # We scaled the output of the tanh for the DAE.
        # That results in all the gradients being multiplied
        # by 4 so we have to correct for this.
        alpha = self.mydae.output_scaling_factor ** 2

        assert_total_difference(self.test, dae_grad_W, alpha * ref_grad_W, 0.01)
        assert_total_difference(self.test, dae_grad_b, alpha * ref_grad_b, 0.01)
        assert_total_difference(self.test, dae_grad_c, alpha * ref_grad_c, 0.01)
def plot_reference_spiral_for_ICLR_paper(simulated_frames_output_dir, n_simulated_samples, n_iter):
    # Plot the reference graph for the ICLR paper.
    import debian_spiral
    original_spiral_samples = debian_spiral.sample(n_simulated_samples * n_iter, 0.0).reshape((1,-1,2))
    write_simulated_samples_frames(original_spiral_samples,
                                   lambda i: os.path.join(simulated_frames_output_dir, "original_spiral_samples_width_0.5.png"),
                                   window_width=0.5)
    write_simulated_samples_frames(original_spiral_samples,
                                   lambda i: os.path.join(simulated_frames_output_dir, "original_spiral_samples_width_1.0.png"),
                                   window_width=1.0)
    write_simulated_samples_frames(original_spiral_samples,
                                   lambda i: os.path.join(simulated_frames_output_dir, "original_spiral_samples_width_2.0.png"),
                                   window_width=2.0)


# plot_reference_spiral_for_ICLR_paper("/u/alaingui/Documents/tmp/14", 100, 100)



#  python dae_langevin_sampling.py $HOME/umontreal/denoising_autoencoder/plots/experiment_970584/results.pkl $HOME/Documents/tmp/1

# ffmpeg -i /u/alaingui/Documents/tmp/4/simulation_frame_%05d.png -vcodec mpeg4 /u/alaingui/Documents/tmp/4/sequence.avi
def get_starting_point_for_spiral():
    import debian_spiral
    spiral_samples = debian_spiral.sample(1000, 0.0, want_sorted_data=True)
    return spiral_samples[0, :]
示例#7
0
# Now that we fix the training data, we have to insist
# on the difference between original data and noisy replicated
# versions of that original data.
if 'n_spiral_original_samples' not in override_params.keys():
    n_spiral_original_samples = 1000
else:
    n_spiral_original_samples = override_params['n_spiral_original_samples']

if 'spiral_samples_noise_stddev' not in override_params.keys():
    spiral_samples_noise_stddev = 0.0
else:
    spiral_samples_noise_stddev = override_params[
        'spiral_samples_noise_stddev']
angle_restriction = 1.0
original_data = debian_spiral.sample(n_spiral_original_samples,
                                     spiral_samples_noise_stddev,
                                     want_sorted_data=False,
                                     angle_restriction=angle_restriction)

replication_factor = 10
n_spiral_replicated_samples = n_spiral_original_samples * replication_factor

if 'train_noise_stddev' not in override_params.keys():
    train_noise_stddev = 0.01
else:
    train_noise_stddev = override_params['train_noise_stddev']
clean_data = np.tile(original_data, (replication_factor, 1))
np.random.shuffle(clean_data)
noisy_data = clean_data + np.random.normal(size=clean_data.shape,
                                           scale=train_noise_stddev)

# 5% of the values will have noise 10 times as larger applied to them
示例#8
0
import dae_theano
#dae_theano = reload(dae_theano)
mydae = dae_theano.DAE(n_hiddens=56,
                       epochs=1000,
                       learning_rate=0.01,
                       prob_large_noise=0.000,
                       large_noise_sigma=1.0,
                       jacobi_penalty=0.01,
                       batch_size=25)

import debian_spiral
import numpy

n_spiral_samples = 2000
spiral_samples_noise = 0.01
(X,Y) = debian_spiral.sample(n_spiral_samples, spiral_samples_noise)

data = numpy.vstack((X,Y)).T
mydae.fit(data, verbose=True)

mydae.set_params_to_best_noisy()

# print "mydae.W is "
# print mydae.W
# print "mydae.b is "
# print mydae.b
# print "mydae.c is "
# print mydae.c
# print data

def get_starting_point_for_spiral():
    import debian_spiral
    spiral_samples = debian_spiral.sample(1000, 0.0, want_sorted_data = True)
    return spiral_samples[0,:]