File size: 6,116 Bytes
0887820 3b36068 0887820 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | import importlib
import sys
import getopt
import os
import experiment.experiment_script as rbe
importlib.reload(rbe)
learning_rate = [0.005, 0.01, 0.05, 0.1, 0.5]
patience_round = 50
outlier_index = 1.5
def run_batch_experiment(model_learning_rate,
augmentation=False,
remove_outlier_qtr=False,
round_number=1,
iteration=200,
use_model_weight=True,
dataset_name="simple",
experiment_version=2,
use_early_stopping=False
):
dataset_directory = f'data/{dataset_name}'
output_group_directory = f'result/{dataset_name}'
os.makedirs(output_group_directory, exist_ok=True)
output_directory = f'{output_group_directory}/{dataset_name}_{experiment_version}'
output_directory += f"_{model_learning_rate}"
if remove_outlier_qtr:
output_directory += "_remove_outlier"
if augmentation:
output_directory += "_augmented"
if use_early_stopping:
output_directory += "_early_stopping"
try:
rbe.run_experiment(data_directory=dataset_directory, epoch=iteration,
learning_rate_list=learning_rate, round_number=round_number,
folder_name=output_directory, breakpoint=iteration / 2,
early_stopping=use_early_stopping, patience_round=patience_round,
augmentation=augmentation,
outlier_index=outlier_index,
remove_outlier_qtr=remove_outlier_qtr,
use_model_weight=use_model_weight,
model_learning_rate=model_learning_rate)
except Exception as e:
print("Error in Experiment", e)
pass
def run_in_many_learning_rate(dataset_name="simple", experiment_version=2, round_number=1, iteration=200):
model_learning_rate_list = [0.0000001, 0.00000001]
early_stopping_list = [False, True]
for model_learning_rate in model_learning_rate_list:
for early_stopping in early_stopping_list:
# Normal
print(
f'LL: {model_learning_rate} / Normal / Eearly Stopping: {early_stopping}')
run_batch_experiment(model_learning_rate=model_learning_rate,
augmentation=False,
remove_outlier_qtr=False,
round_number=round_number,
iteration=iteration,
use_model_weight=True,
dataset_name=dataset_name,
experiment_version=experiment_version,
use_early_stopping=early_stopping
)
# Remove Outlier
print(
f'LL: {model_learning_rate} / Remove Outlier / Eearly Stopping: {early_stopping}')
run_batch_experiment(model_learning_rate=model_learning_rate,
augmentation=False,
remove_outlier_qtr=True,
round_number=round_number,
iteration=iteration,
use_model_weight=True,
dataset_name=dataset_name,
experiment_version=experiment_version,
use_early_stopping=early_stopping
)
# Augmentation
print(
f'LL: {model_learning_rate} / Augmentation / Eearly Stopping: {early_stopping}')
run_batch_experiment(model_learning_rate=model_learning_rate,
augmentation=True,
remove_outlier_qtr=False,
round_number=round_number,
iteration=iteration,
use_model_weight=True,
dataset_name=dataset_name,
experiment_version=experiment_version,
use_early_stopping=early_stopping
)
print(
f'LL: {model_learning_rate} / Remove Outlier & Augmentation / Eearly Stopping: {early_stopping}')
# Remove Outlier and Augmentation
run_batch_experiment(model_learning_rate=model_learning_rate,
augmentation=True,
remove_outlier_qtr=True,
round_number=round_number,
iteration=iteration,
use_model_weight=True,
dataset_name=dataset_name,
experiment_version=experiment_version,
use_early_stopping=early_stopping
)
if __name__ == "__main__":
try:
opts, args = getopt.getopt(sys.argv[1:], "d:v:r:i:", [
"dataset=", "version=", 'round=', 'iteration='])
except getopt.GetoptError as err:
print(err)
# Process options
for opt, arg in opts:
if opt in ("-d", "--dataset"):
dataset_name = arg
elif opt in ("-v", "--version"):
experiment_version = int(arg)
elif opt in ("-r", "--round"):
round_number = int(arg)
elif opt in ("-i", "--iteration"):
iteration = int(arg)
print(
f"Dataset: {dataset_name} / Version: {experiment_version} / Round: {round_number} / Iteration: {iteration}")
run_in_many_learning_rate(dataset_name=dataset_name,
experiment_version=experiment_version,
round_number=round_number,
iteration=iteration)
|