コード例 #1
0
ファイル: VAETest.py プロジェクト: cyranawm/atiamML
    def test_VAE_saveState(self):
        mb_size = 49  # because dummyDataset98.npz is a 98 data size
        epoch_nb = 11
        datasetName = 'dummyDataset98.npz'
        datasetDir = './dummyDataset/'
        testDataset = NPZ_Dataset(datasetName, datasetDir, 'Spectrums')
        train_loader = torch.utils.data.DataLoader(testDataset,
                                                   batch_size=mb_size,
                                                   shuffle=True)

        # define vae structure
        X_dim = 1024
        Z_dim = 6
        IOh_dims_Enc = [X_dim, 401, Z_dim]
        IOh_dims_Dec = [Z_dim, 399, X_dim]
        NL_types_Enc = ['relu6']
        NL_types_Dec = ['relu6', 'sigmoid']
        vae = VAE(X_dim, Z_dim, IOh_dims_Enc, IOh_dims_Dec, NL_types_Enc,
                  NL_types_Dec, mb_size)

        vae.trainVAE(train_loader, epoch_nb)
        # save it
        if vae.trained:
            vae.save(datasetName, datasetDir)

        self.assertTrue(vae.created and vae.trained and vae.saved)
コード例 #2
0
def vae_train():
    # load train
    x_train = load_dataset('adi')

    # load test normal and anomaly
    test_anomaly = load_dataset('vans')
    test_normal = load_dataset('adi_test')

    # drfine train and valid iamge for train
    trains = x_train[10:]
    valid = x_train[:10]
    print(trains.shape, valid.shape, test_anomaly.shape, test_normal.shape)

    # try to plot
    plt.imshow(x_train[10].reshape(256, 256))
    plt.gray()
    plt.show()

    # train
    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True

    def step_decay(epoch):
        initial_lrate = 0.0001
        decay_rate = 0.5
        decay_steps = 8.0
        lrate = initial_lrate * math.pow(decay_rate,
                                         math.floor((1 + epoch) / decay_steps))
        return lrate

    callback = []
    callback.append(
        HistoryCheckpoint(filepath='tb/LearningCurve_{history}.png',
                          verbose=1,
                          period=300))
    callback.append(LearningRateScheduler(step_decay))

    model = VAE()
    model, loss = model.vae_net()
    #model.load_weights("vae_model.h5")

    model.add_loss(loss)
    model.compile(optimizer=Adam(lr=0.0001))
    model.summary()

    try:
        model.fit(trains,
                  batch_size=20,
                  epochs=300,
                  callbacks=callback,
                  validation_data=(valid, None))
    finally:
        model.save('weight/vae_model.h5')
コード例 #3
0
ファイル: VAETest.py プロジェクト: cyranawm/atiamML
    def test_gaussianVAE_trainsaveload(self):
        mb_size = 49  # because dummyDataset98.npz is a 98 data size
        epoch_nb = 5
        # if exists remove 'saveloadTest' folder
        if os.path.exists('./saveloadTest'):
            shutil.rmtree('./saveloadTest')
        # create a VAE
        X_dim = 1024
        Z_dim = 10
        IOh_dims_Enc = [X_dim, 600, Z_dim]
        IOh_dims_Dec = [Z_dim, 600, X_dim]
        NL_types_Enc = ['relu6']
        NL_types_Dec = ['relu6']
        vae = VAE(X_dim,
                  Z_dim,
                  IOh_dims_Enc,
                  IOh_dims_Dec,
                  NL_types_Enc,
                  NL_types_Dec,
                  mb_size,
                  bernoulli=False,
                  gaussian=True)
        # prepare dataset
        datasetName = 'dummyDataset98.npz'
        datasetDir = './dummyDataset/'
        saveDir = './dummySaveTest/'
        testDataset = NPZ_Dataset(datasetName, datasetDir, 'Spectrums')
        train_loader = torch.utils.data.DataLoader(testDataset,
                                                   batch_size=mb_size,
                                                   shuffle=True)
        # train it for 10 epochs
        vae.trainVAE(train_loader, epoch_nb)
        # save it
        savefile = vae.save(datasetName, saveDir)
        # reload the savefile of VAE
        vae = loadVAE(savefile, saveDir)

        # continue training
        # vae.trainVAE(train_loader, 10)
        # vae.save(datasetName, datasetDir)
        self.assertTrue(vae.created and vae.loaded and vae.saved)
コード例 #4
0
ファイル: mainScript.py プロジェクト: cyranawm/atiamML
    if args.type == 'bernoulli':
        vae = VAE(X_dim, Z_dim, IOh_dims_Enc,
                  IOh_dims_Dec, NL_types_Enc, NL_types_Dec, mb_size,
                  bernoulli=True, gaussian=False, beta=beta, Nwu=Nwu, noiseIn=noise, noiseGain=noiseGain)
    elif args.type == 'gaussian':
        vae = VAE(X_dim, Z_dim, IOh_dims_Enc,
                  IOh_dims_Dec, NL_types_Enc, NL_types_Dec, mb_size,
                  bernoulli=False, gaussian=True, beta=beta, Nwu=Nwu, noiseIn=noise, noiseGain=noiseGain)
    else:
        print("ERROR script: Chose VAE type -> either bernoulli or gaussian")

    # train it for N epochs
    vae.trainVAE(train_loader, epoch_nb)

    # save it
    vae.save(datasetName, saveDir)

elif mode == "load":

    # get savefile path
    directory = args.vae_path
    savefile = directory.split("/")[-1]
    directory = directory.replace(savefile, "")
    # load vae
    vaeLoaded = loadVAE(savefile, directory)

    # Now do some stuff (e.g. PCA, t-sne, generate ...)
    # Here for example it generates 200 images. Each image is 200x1024.
    # It corresponds to 200 stacked spectra (of size 1024).
    # Hence, x axis corresponds to frequency while y axis is a latent dimension varying from -10 to 10.
    # When changing image it varies another latent dimension also from -10 to 10.