def plotGaussian():
    # Plotting the gaussian plots
    import pandas as pd
    from Simulated_DataSets.Gaussian_Mixture.generate_Gaussian import plotData
    import numpy as np
    import os
    data_dir = '/work/sr365/multi_eval'
    for dirs in os.listdir(data_dir):
        print("entering :", dirs)
        print("this is a folder?:", os.path.isdir(os.path.join(data_dir, dirs)))
        print("this is a file?:", os.path.isfile(os.path.join(data_dir, dirs)))
        if not os.path.isdir(os.path.join(data_dir, dirs)):
            continue
        for subdirs in os.listdir(os.path.join(data_dir, dirs)):
            if 'gaussian' in subdirs:                          
                for subfiles in os.listdir(os.path.join(data_dir, dirs, subdirs)):
                    if 'inference0' not in subfiles:
                        continue;
                    if 'Ypred' in subfiles:
                        filename = os.path.join(data_dir, dirs, subdirs, subfiles)
                        data_y = pd.read_csv(filename, header=None, sep=' ').values.astype('float')
                        if 'Backprop' in dirs:
                            data_y = np.argmax(data_y,axis=1)
                        data_y = np.ravel(data_y)
                        print("shape of data_y", np.shape(data_y))
                    if 'Xpred' in subfiles:
                        filename = os.path.join(data_dir, dirs, subdirs, subfiles)
                        data_x = pd.read_csv(filename, header=None, sep=' ').values
                        print("shape of data_x", np.shape(data_x))
                plotData(data_x, data_y, save_dir=dirs+'generated_gaussian_inference0.png',eval_mode=True)
Пример #2
0
def evaluate_from_model(model_dir, multi_flag=False, eval_data_all=False):
    """
    Evaluating interface. 1. Retreive the flags 2. get data 3. initialize network 4. eval
    :param model_dir: The folder to retrieve the model
    :param eval_data_all: The switch to turn on if you want to put all data in evaluation data
    :return: None
    """
    # Retrieve the flag object
    print("Retrieving flag object for parameters")
    if (model_dir.startswith("models")):
        model_dir = model_dir[7:]
        print("after removing prefix models/, now model_dir is:", model_dir)
    flags = helper_functions.load_flags(os.path.join("models", model_dir))
    flags.eval_model = model_dir                    # Reset the eval mode

    # Set up the test_ratio
    if flags.data_set == 'ballistics':
        flags.test_ratio = 0.1
    elif flags.data_set == 'sine_wave':
        flags.test_ratio = 0.1
    elif flags.data_set == 'robotic_arm':
        flags.test_ratio = 0.1
    
    # Get the data
    train_loader, test_loader = data_reader.read_data(flags, eval_data_all=eval_data_all)
    print("Making network now")

    # Make Network
    ntwk = Network(INN, flags, train_loader, test_loader, inference_mode=True, saved_model=flags.eval_model)
    print(ntwk.ckpt_dir)
    print("number of trainable parameters is :")
    pytorch_total_params = sum(p.numel() for p in ntwk.model.parameters() if p.requires_grad)
    print(pytorch_total_params)

    # Evaluation process
    print("Start eval now:")
    if multi_flag:
        ntwk.evaluate_multiple_time()
    else:
        pred_file, truth_file = ntwk.evaluate()

    # Plot the MSE distribution
    if flags.data_set != 'meta_material' and not multi_flag: 
        plotMSELossDistrib(pred_file, truth_file, flags)
    print("Evaluation finished")
    
    # If gaussian, plot the scatter plot
    if flags.data_set == 'gaussian_mixture':
        Xpred = helper_functions.get_Xpred(path='data/', name=flags.eval_model) 
        Ypred = helper_functions.get_Ypred(path='data/', name=flags.eval_model) 

        # Plot the points scatter
        generate_Gaussian.plotData(Xpred, Ypred, save_dir='data/' + flags.eval_model.replace('/','_') + 'generation plot.png', eval_mode=True)