예제 #1
0
                    nargs=2)
parser.add_argument('-DS',
                    '--dataset',
                    help='Path to the dataset csv file',
                    required=True)
parser.add_argument('-P',
                    '--params',
                    help='Path to hyperparameters json file',
                    required=True)
args = parser.parse_args()

logger = Logger()
logger.log('Starting q2_analyze.py...')

logger.log('Loading \"' + args.data[0] + '\" and \"' + args.data[1] + '\"')
hist1 = read_json_to_dict(args.data[0])
hist2 = read_json_to_dict(args.data[1])

# Hyperparameters
hyperparameters = read_json_to_dict(args.params)

# Setup data to be used
df = pd.DataFrame(
    hist2['Q2']).applymap(lambda x: training_result(x, mode='loss'))
columns = hist2['columns']


def decode_col_name(col):
    idx = list(map(int, col.split(",")))
    removed_col = [columns[i] for i in idx]
    remaining_cols = list(set(columns) - set(removed_col))
예제 #2
0
logger.log('Starting q3_train.py...')

# Loading dataset
logger.log('Loading dataset from \"' + args.data + '\"...')
df = pd.read_csv(args.data)
dataset = PreprocessDataset(df=df,
                            feature_columns=df.columns[1:8],
                            label_column=df.columns[-1],
                            test_ratio=0.3,
                            fold=5)
X_train, y_train = dataset.get_train()
X_test, y_test = dataset.get_test()

# Defining hyperparameters
try:
    hyperparameters = read_json_to_dict(args.params)
except:
    hyperparameters = {
        "input_shape": (7, ),
        "removed": [],
        "batch_size": 8,
        "num_neurons": 10,
        "alpha": 1e-3,
        "beta": 1e-3
    }
    write_dict_to_json(hyperparameters, args.params)

epochs = 10000
num_neurons = 50
dropout = 0.2
batch_size = hyperparameters['batch_size']
예제 #3
0
import argparse
import pandas as pd
import matplotlib.pyplot as plt
from utils.logger import Logger
from utils.dict_json import read_json_to_dict
from utils.acc_loss import acc_converge_epoch, loss_converge_epoch, training_result

parser = argparse.ArgumentParser()
parser.add_argument('-D', '--data', help='Path to result json file', required=True)
args = parser.parse_args()

logger = Logger()
logger.log('Starting q2_analyze.py...')

logger.log('Loading \"' + args.data + '\"')
histories = read_json_to_dict(args.data)
batch_epoch = pd.DataFrame(histories['Q2']['cv']['accuracy'])
time_per_epoch = pd.DataFrame(histories['Q2']['cv']['time'])
epoch_to_converge = batch_epoch.applymap(lambda x: acc_converge_epoch(x))
cv_accuracy = batch_epoch.applymap(lambda x: training_result(x))

total_time_to_converge = (epoch_to_converge * time_per_epoch).mean()
print(epoch_to_converge)
epoch_to_converge = epoch_to_converge.mean()
print(cv_accuracy)
cv_accuracy = cv_accuracy.mean()
batch_size = histories['Q2']['optimal']['optimal_batch']

def q2a1():
    logger.log('Analyzing Q2(a1)...')
    
예제 #4
0
import argparse
import pandas as pd
import matplotlib.pyplot as plt
from utils.logger import Logger
from utils.dict_json import read_json_to_dict
from utils.acc_loss import acc_converge_epoch, loss_converge_epoch, training_result

parser = argparse.ArgumentParser()
parser.add_argument('-D', '--data', nargs=2, help='Path to the result json files for Q4 and Q5', required=True)
args = parser.parse_args()

logger = Logger()
logger.log('Starting q5_analyze.py...')

logger.log('Loading \"' + args.data[0] + '\" and \"' + args.data[1] + '\"')
hist1 = read_json_to_dict(args.data[0])
hist2 = read_json_to_dict(args.data[1])
if hist1['seed'] == hist2['seed']:
    hist1.update(hist2)
    histories = hist1
else:
    raise Exception('Results for Q4 and Q5 have different seed values')

def q5a():
    logger.log('Analyzing Q5(a)...')
    training_accuracy = histories['Q5']['accuracy'][1:]
    testing_accuracy = histories['Q5']['val_accuracy'][1:]

    f, ax = plt.subplots(figsize=(12, 6))
    plt.plot(training_accuracy, label='training')
    plt.plot(testing_accuracy, label='testing')