Example #1
0
        losses['dis'].append(epochDisLoss / i)

        #### Test
        dae.eval()
        dis.eval()

        #get test outuputs and losses
        xTest, yTest = prep_data(iter(testLoader).next(), useCUDA=dae.useCUDA)
        zTest, recTest = dae.forward(xTest)  #N.B. corruption in here
        recLossTest = dae.rec_loss(recTest, xTest)

        #Plot losses
        losses['test rec'].append(recLossTest.data[0])
        if e > 0:  #only one point for test rec otherwise
            plot_losses(losses, exDir, epochs=e + 1)
            plot_norm_losses(losses, exDir)

        #save parameters
        dae.save_params(exDir)
        dis.save_params(exDir)

        #Save images of original and rec
        save_image(xTest.data, join(exDir, 'original.png'))
        save_image(recTest.data, join(exDir, 'rec.png'))

        #Save samples
        sampleDir = join(exDir, 'epoch_' + str(e))
        os.mkdir(sampleDir)
        print 'sample dir:', sampleDir
        dae.sample_x(opts.M, sampleDir)
Example #2
0
            bceLossTest, klLossTest = vae_loss_fn(rec_x=outputs.data,
                                                  x=xTest,
                                                  mu=outMu,
                                                  logVar=outLogVar)
            maxVal, predLabel = torch.max(outY, 1)
            classScoreTest = torch.eq(predLabel,
                                      yTest).float().sum() / yTest.size(0)
            print 'classification test:', classScoreTest.data[0]

            save_image(xTest, join(exDir, 'input.png'))
            save_image(outputs.data, join(exDir, 'output_' + str(e) + '.png'))

            label_switch(xTest, yTest, cvae, exDir=exDir)

            cvae.save_params(exDir=exDir)

            losses['total'].append(epochLoss / Ns)
            losses['kl'].append(epochLoss_kl / Ns)
            losses['bce'].append(epochLoss_bce / Ns)
            losses['test_bce'].append(
                (bceLossTest).data[0] / xTest.size(0))  #append every epoch
            losses['dis'].append(epochLoss_dis / Ns)
            losses['gen'].append(epochLoss_gen / Ns)
            losses['class'].append(epochLoss_class / Ns)
            losses['test_class'].append(classScoreTest.data[0])

            if e > 1:
                plot_losses(losses, exDir, epochs=e + 1)
                plot_norm_losses(losses, exDir, epochs=1 + e)
        xTest, yTest = prep_data(testData, classer.useCUDA)

        ####### eval VAE #######
        recTest, outMu, outLogVar = vae(xTest)
        bceLossTest, klLossTest = vae.loss(recTest, xTest, outMu, outLogVar)
        save_image(xTest.data, join(exDir, 'input.png'))
        save_image(recTest.data, join(exDir, 'output_' + str(e) + '.png'))

        ####### eval CLASSER #######
        yPredTrain = classer(xTrain)
        yPredTest = classer(xTest)
        classTrain = score(yPredTrain, yTrain).data[0]
        classTest = score(yPredTest, yTest).data[0]

        vaeLosses['test_bce'].append(bceLossTest.mean().data[0])
        vaeLosses['test_kl'].append(bceLossTest.mean().data[0])
        classerLosses['train_acc'].append(classTrain)
        classerLosses['test_acc'].append(classTest)

        viz_DZ(deltaZ.data[0].cpu().numpy(), exDir)

        if e > 0:
            plot_norm_losses(vaeLosses, exDir, e, title='VAE')
            plot_losses(classerLosses, exDir, e, title='CLASSER')
            plot_losses(deltaZLosses, exDir, e, title='DELTAZ')

        #Evaluate the results:
        eval_results(vae, classer, deltaZ, testLoader, exDir)

    inception_score(vae, classer, deltaZ, testLoader, exDir)
                  (e, i, epochLoss/i, epochLoss_dis/i, epochLoss_gen/i, epochLoss_bce/i, epochLoss_kl/i, epochLoss_aux/i, time() - TIME)

        #generate samples after each 10 epochs

        normbceLossTest, classScoreTest = evaluate(cvae,
                                                   testLoader,
                                                   exDir,
                                                   e=e)

        cvae.save_params(exDir=exDir)

        losses['total'].append(epochLoss / Ns)
        losses['kl'].append(epochLoss_kl / Ns)
        losses['bce'].append(epochLoss_bce / Ns)
        losses['test_bce'].append(normbceLossTest)  #append every epoch
        losses['dis'].append(epochLoss_dis / Ns)
        losses['gen'].append(epochLoss_gen / Ns)
        losses['class'].append(epochLoss_class / Ns)
        losses['test_class'].append(classScoreTest)
        losses['aux'].append(epochLoss_aux / Ns)
        losses['auxEnc'].append(epochLoss_auxEnc / Ns)

        if e > 1:
            plot_losses(losses, exDir, epochs=e + 1)
            plot_norm_losses(losses, exDir, epochs=e + 1)

    normbceLossTest, classScoreTest = evaluate(cvae,
                                               testLoader,
                                               exDir,
                                               e='evalMode')