# Path: trainer/trainer.py
# class Trainer:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_training(self):
#     def _train_step(self, sess, train_op, global_step, train_step_kwargs):
#     def _get_variables_to_train(self):
#     def _configure_learning_rate(self, num_samples_per_epoch, global_step):
#     def _configure_optimizer(self, learning_rate):
#     def _add_summaries(self, end_points, total_loss):
#     def _setup_debugging(self, predictions, localizations, glabels, gbboxes, gdifficults):
#     def _get_init_fn(self):
# 
# Path: evaluator/evaluator.py
# class Evaluator:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_evaluation(self):
#     def eval_all_checkpoints(self, min_step, step):
#     def _setup_evaluation(self):
#     def _get_all_checkpoints(self, min_step, step):


from trainer.trainer import TrainerParams
from evaluator.evaluator import EvaluatorParams
    optimizer='adam',
    weight_decay=0.0005,
    batch_size=10,
    log_every_n_steps=100,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# start from 184587 steps for the last fine tune stage. Finished at 22:00 on 6.12 Wednesday. Total_loss=~3.5
# -------------------------------------------------------- #
# Evaluate when not training
eval1 = EvaluatorParams(
    checkpoint_path='/home/yjin/SSD/experiments/ssd512_voc0712_29-11-2017/logs/',
    use_finetune=False,
    is_training=False,
    eval_train_dataset=False,
    loop=False,
    which_checkpoint=None
    )
# Evaluate while training
eval2 = EvaluatorParams(
    checkpoint_path='/home/yjin/SSD/experiments/ssd512_voc0712_29-11-2017/logs/',
    use_finetune=False,
    is_training=True,
    eval_train_dataset=False,
    loop=True,
    which_checkpoint=None
    )
# Evluate when not training, after fine tune

# Path: trainer/trainer.py
# class Trainer:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_training(self):
#     def _train_step(self, sess, train_op, global_step, train_step_kwargs):
#     def _get_variables_to_train(self):
#     def _configure_learning_rate(self, num_samples_per_epoch, global_step):
#     def _configure_optimizer(self, learning_rate):
#     def _add_summaries(self, end_points, total_loss):
#     def _setup_debugging(self, predictions, localizations, glabels, gbboxes, gdifficults):
#     def _get_init_fn(self):
# 
# Path: evaluator/evaluator.py
# class Evaluator:
#     def __init__(self, ssd_model, data_preparer, data_postprocessor, params):
#     def start_evaluation(self):
#     def eval_all_checkpoints(self, min_step, step):
#     def _setup_evaluation(self):
#     def _get_all_checkpoints(self, min_step, step):


# Path: experiments/ssd512_voc0712.py
from trainer.trainer import TrainerParams
from evaluator.evaluator import EvaluatorParams

    optimizer='adam',
    weight_decay=0.0005,
    batch_size=10,
    log_every_n_steps=100,
    save_interval_secs=60*60,
    save_summaries_secs=60,
    labels_offset=0,
    matched_thresholds=0.5
    )
# start from 184587 steps for the last fine tune stage. Finished at 22:00 on 6.12 Wednesday. Total_loss=~3.5
# -------------------------------------------------------- #
# Evaluate when not training
eval1 = EvaluatorParams(
    checkpoint_path='/home/yjin/SSD/experiments/ssd512_voc0712_29-11-2017/logs/',
    use_finetune=False,
    is_training=False,
    eval_train_dataset=False,
    loop=False,
    which_checkpoint=None
    )
# Evaluate while training
eval2 = EvaluatorParams(
    checkpoint_path='/home/yjin/SSD/experiments/ssd512_voc0712_29-11-2017/logs/',
    use_finetune=False,
    is_training=True,
    eval_train_dataset=False,
    loop=True,
    which_checkpoint=None
    )
# Evluate when not training, after fine tune

eval3 = EvaluatorParams(