コード例 #1
0
ファイル: test_models.py プロジェクト: nperraud/gantools
    def test_1d(self):
        bn = False
        params = dict()
        params['optimization'] = dict()
        params['optimization']['epoch'] = 1
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3
        params['net'] = dict()
        params['net']['shape'] = [16, 1]  # Shape of the image
        params['net']['generator'] = dict()
        params['net']['generator']['latent_dim'] = 100
        params['net']['generator']['full'] = [2 * 8]
        params['net']['generator']['nfilter'] = [2, 32, 32, 1]
        params['net']['generator']['batch_norm'] = [bn, bn, bn]
        params['net']['generator']['shape'] = [[5], [5], [5], [5]]
        params['net']['generator']['stride'] = [1, 2, 1, 1]
        params['net']['generator']['data_size'] = 1
        params['net']['discriminator'] = dict()
        params['net']['discriminator']['full'] = [32]
        params['net']['discriminator']['nfilter'] = [16, 32, 32, 32]
        params['net']['discriminator']['batch_norm'] = [bn, bn, bn, bn]
        params['net']['discriminator']['shape'] = [[5], [5], [5], [3]]
        params['net']['discriminator']['stride'] = [2, 2, 2, 1]
        params['net']['discriminator']['data_size'] = 1

        X = np.random.rand(101, 16)
        dataset = Dataset(X)
        wgan = GANsystem(WGAN, params)
        wgan.train(dataset)
        img = wgan.generate(2)
        assert (len(img) == 2)
        assert (img.shape[1:] == (16, 1))
        img = wgan.generate(500)
        assert (len(img) == 500)
コード例 #2
0
    def test_generate(self):
        params = dict()
        params['optimization'] = dict()
        params['optimization']['epoch'] = 1
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3
        params['net']= dict()
        params['net']['generator'] = dict()
        params['net']['generator']['latent_dim'] = 5
        X = np.random.rand(101,16,16)
        dataset = Dataset(X)
        wgan = GANsystem(WGAN, params)
        wgan.train(dataset)
        img = wgan.generate(2)
        img = wgan.generate(500)
        assert(len(img)==500)
        z = np.random.randn(133,5)

        img1 = wgan.generate(z=z)

        img2 = np.zeros(shape=img1.shape)
        for i in range(133):
            img2[i] = wgan.generate(z=np.reshape(z[i], [1,5]))
        np.testing.assert_almost_equal(img1, img2, decimal=6)
コード例 #3
0
 def test_gansystem(self):
     params = dict()
     params['optimization'] = dict()
     params['optimization']['epoch'] = 1
     params['summary_every'] = 4
     params['save_every'] = 5
     params['print_every'] = 3
     X = np.random.rand(101,16,16)
     dataset = Dataset(X)
     wgan = GANsystem(WGAN, params)
     wgan.train(dataset)
     img = wgan.generate(2)
     img = wgan.generate(500)
     assert(len(img)==500)
コード例 #4
0
ファイル: test_models.py プロジェクト: nperraud/gantools
    def test_patchupscalegan1dborder(self):
        bn = False
        params = dict()
        params['optimization'] = dict()
        params['optimization']['epoch'] = 1
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3
        params['net'] = dict()
        params['net']['shape'] = [8, 2]
        params['net']['generator'] = dict()
        params['net']['generator']['latent_dim'] = 8
        params['net']['generator']['full'] = [16]
        params['net']['generator']['nfilter'] = [8, 32, 1]
        params['net']['generator']['batch_norm'] = [bn, bn]
        params['net']['generator']['shape'] = [[3], [3], [3]]
        params['net']['generator']['stride'] = [1, 1, 1]
        params['net']['generator']['data_size'] = 1
        params['net']['generator']['borders'] = dict()
        params['net']['generator']['borders']['width_full'] = None
        params['net']['generator']['borders']['nfilter'] = [4, 1]
        params['net']['generator']['borders']['batch_norm'] = [bn, bn]
        params['net']['generator']['borders']['shape'] = [[5], [3]]
        params['net']['generator']['borders']['stride'] = [2, 2]
        params['net']['generator']['borders']['data_size'] = 1
        params['net']['generator']['borders']['width_full'] = 2
        params['net']['discriminator'] = dict()
        params['net']['discriminator']['full'] = [32]
        params['net']['discriminator']['nfilter'] = [16, 32]
        params['net']['discriminator']['batch_norm'] = [bn, bn]
        params['net']['discriminator']['shape'] = [[5], [3]]
        params['net']['discriminator']['stride'] = [2, 2]
        params['net']['discriminator']['data_size'] = 1
        params['net']['upscaling'] = 2

        X = np.random.rand(101, 8, 2)
        dataset = Dataset(X)
        wgan = GANsystem(UpscalePatchWGAN, params)
        wgan.train(dataset)
        borders = np.random.rand(500, 8, 1)
        X_smooth = np.random.rand(500, 8, 1)
        print(borders[:2].shape)
        img = wgan.generate(N=2, X_smooth=X_smooth[:2], borders=borders[:2])
        assert (len(img) == 2)
        assert (img.shape[1:] == (8, 1))
        img = wgan.generate(N=500,
                            X_smooth=X_smooth[:500],
                            borders=borders[:500])
        assert (len(img) == 500)
コード例 #5
0
    def test_patchupscalegan3d(self):
        bn = False
        params = dict()
        params['optimization'] = dict()
        params['optimization']['epoch'] = 1
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3
        params['net'] = dict()
        params['net']['shape'] = [8, 8, 8, 8]
        params['net']['generator'] = dict()
        params['net']['generator']['latent_dim'] = 8 * 8 * 8
        params['net']['generator']['full'] = []
        params['net']['generator']['nfilter'] = [8, 32, 1]
        params['net']['generator']['batch_norm'] = [bn, bn]
        params['net']['generator']['shape'] = [[3, 3, 3], [3, 3, 3], [3, 3, 3]]
        params['net']['generator']['stride'] = [1, 1, 1]
        params['net']['generator']['data_size'] = 3
        params['net']['discriminator'] = dict()
        params['net']['discriminator']['full'] = [32]
        params['net']['discriminator']['nfilter'] = [16, 32]
        params['net']['discriminator']['batch_norm'] = [bn, bn]
        params['net']['discriminator']['shape'] = [[3, 3, 3], [3, 3, 3]]
        params['net']['discriminator']['stride'] = [2, 2]
        params['net']['discriminator']['data_size'] = 3
        params['net']['upsampling'] = 2

        X = np.random.rand(101, 8, 8, 8, 8)
        dataset = Dataset(X)

        class UgradedGAN(UpscalePatchWGAN, CosmoWGAN):
            pass

        wgan = GANsystem(UgradedGAN, params)
        wgan.train(dataset)
        borders = np.random.rand(500, 8, 8, 8, 7)
        X_down = np.random.rand(500, 4, 4, 4, 1)

        img = wgan.generate(N=2, X_down=X_down[:2], borders=borders[:2])
        assert (len(img) == 2)
        assert (img.shape[1:] == (8, 8, 8, 1))
        img = wgan.generate(N=500, X_down=X_down[:500], borders=borders[:500])
        assert (len(img) == 500)
コード例 #6
0
ファイル: test_models.py プロジェクト: nperraud/gantools
    def test_lapgan2d(self):
        bn = False
        params = dict()
        params['optimization'] = dict()
        params['optimization']['epoch'] = 1
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3
        params['net'] = dict()
        params['net']['shape'] = [16, 16, 1]
        params['net']['generator'] = dict()
        params['net']['generator']['latent_dim'] = 16 * 16
        params['net']['generator']['full'] = []
        params['net']['generator']['nfilter'] = [8, 32, 1]
        params['net']['generator']['batch_norm'] = [bn, bn]
        params['net']['generator']['shape'] = [[5, 5], [5, 5], [5, 5]]
        params['net']['generator']['stride'] = [1, 1, 1]
        params['net']['generator']['data_size'] = 2
        params['net']['discriminator'] = dict()
        params['net']['discriminator']['full'] = [32]
        params['net']['discriminator']['nfilter'] = [16, 32]
        params['net']['discriminator']['batch_norm'] = [bn, bn]
        params['net']['discriminator']['shape'] = [[5, 5], [3, 3]]
        params['net']['discriminator']['stride'] = [2, 2]
        params['net']['discriminator']['data_size'] = 2
        params['net']['upscaling'] = 2

        X = np.random.rand(101, 16, 16)
        dataset = Dataset(X)

        wgan = GANsystem(LapWGAN, params)
        wgan.train(dataset)
        X_down = np.random.rand(500, 8, 8, 1)
        img = wgan.generate(N=2, X_down=X_down[:2])
        assert (len(img) == 2)
        assert (img.shape[1:] == (16, 16, 1))
        img = wgan.generate(N=500, X_down=X_down[:500])
        assert (len(img) == 500)
コード例 #7
0
        wgan = GANsystem(InpaintingGAN, params)

        # Generate new samples
        print('Generate new samples')
        real_signals = dataset.get_samples(N=N_f)
        if model == 'extend':
            border1 = real_signals[:, signal_split[0]:(signal_split[0] +
                                                       signal_split[1])]
            border2 = real_signals[:, -(signal_split[3] +
                                        signal_split[4]):-signal_split[4]]
            border3 = real_signals[:, :(signal_split[0] + signal_split[1])]
            border4 = real_signals[:, -(signal_split[3] + signal_split[4]):]
            borders1 = np.stack([border1, border2], axis=2)
            borders2 = np.stack([border3, border4], axis=2)
            fake_signals = np.squeeze(wgan.generate(N=N_f,
                                                    borders1=borders1,
                                                    borders2=borders2)[1],
                                      axis=2)
        elif model == 'basic':
            border1 = real_signals[:, :signal_split[0]]
            border2 = real_signals[:, -signal_split[2]:]
            borders = np.stack([border1, border2], axis=2)
            fake_signals = np.squeeze(wgan.generate(N=N_f, borders=borders))

        # =============================================================================
        # import ltfatpy
        # from ltfatpy import plotdgtreal
        # def plot_sgram(signal, a = 256, M = 512, g='itersine', dynrange=80, **kwargs):
        #     c = ltfatpy.gabor.dgtreal.dgtreal(signal, g, a, M)[0]
        #     return plotdgtreal(c, a, M, dynrange=dynrange,**kwargs)
        # =============================================================================
コード例 #8
0
wgan = GANsystem(ModSpectrogramGAN, params)

nsamples = 256
nlatent = 100

def clip_dist2(nsamples, nlatent, m=2.5):
    shape = [nsamples, nlatent]
    z = np.random.randn(*shape)
    support = np.logical_or(z<-m, z>m)
    while np.sum(support):
        z[support] = np.random.randn(*shape)[support]
        support = np.logical_or(z<-m, z>m)
    return z

d2 = clip_dist2(nsamples, nlatent)
np.max(d2), np.min(d2)

real_signals = dataset.get_samples(N=64)
print(real_signals.shape)
fake_signals = np.squeeze(wgan.generate(N=nsamples, z=d2))

print(real_signals.max())
print(real_signals.min())
print(real_signals.mean())

print(fake_signals.max())
print(fake_signals.min())
print(fake_signals.mean())
import scipy.io

scipy.io.savemat('commands_listen.mat', {"original": real_signals, "generated": fake_signals})
コード例 #9
0
ファイル: test_models.py プロジェクト: nperraud/gantools
    def test_conditionalwgan(self):

        bn = False
        ns = 16

        # Parameters for the generator
        params_generator = dict()
        params_generator['latent_dim'] = 126
        params_generator['stride'] = [1, 2, 1, 1]
        params_generator['nfilter'] = [32, 64, 32, 1]
        params_generator['shape'] = [[5, 5], [5, 5], [5, 5], [5, 5]]
        params_generator['batch_norm'] = [bn, bn, bn]
        params_generator['full'] = [8 * 8 * 32]
        params_generator['non_lin'] = tf.nn.relu
        params_generator['in_conv_shape'] = [8, 8]

        # Parameters for the discriminator
        params_discriminator = dict()
        params_discriminator['stride'] = [2, 2, 1]
        params_discriminator['nfilter'] = [16, 64, 32]
        params_discriminator['shape'] = [[5, 5], [5, 5], [3, 3]]
        params_discriminator['batch_norm'] = [bn, bn, bn]
        params_discriminator['full'] = [512, 128, 32]
        params_discriminator['minibatch_reg'] = False

        # Optimization parameters
        d_opt = dict()
        d_opt['optimizer'] = "rmsprop"
        d_opt['learning_rate'] = 3e-5
        params_optimization = dict()
        params_optimization['n_critic'] = 5
        params_optimization['batch_size'] = 8
        params_optimization['epoch'] = 1

        # all parameters
        params = dict()
        params['net'] = dict()  # All the parameters for the model
        params['net']['generator'] = params_generator
        params['net']['discriminator'] = params_discriminator
        params['net']['shape'] = [ns, ns, 1]  # Shape of the image
        params['net']['gamma_gp'] = 10  # Gradient penalty

        # Conditional params
        params['net']['prior_normalization'] = False
        params['net']['cond_params'] = 2
        params['net']['init_range'] = [[0, 1], [0, 1]]
        params['net']['prior_distribution'] = "gaussian_length"
        params['net']['final_range'] = [
            0.1 * np.sqrt(params_generator['latent_dim']),
            1 * np.sqrt(params_generator['latent_dim'])
        ]

        params['optimization'] = params_optimization
        params['summary_every'] = 4
        params['save_every'] = 5
        params['print_every'] = 3

        X = np.random.rand(101, ns, ns)
        parameters = np.random.rand(101, 2)
        dataset = Dataset_parameters(X, parameters)
        wgan = GANsystem(ConditionalParamWGAN, params)
        wgan.train(dataset)
        img = wgan.generate(N=16,
                            **{
                                'z':
                                wgan.net.sample_latent(bs=16,
                                                       params=np.random.rand(
                                                           16, 2))
                            })
        assert (img.shape[0] == 16 and img.shape[1] == ns
                and img.shape[2] == ns and img.shape[3] == 1)