Source code for orcanet_contrib.parser_orcatrain

"""
Use orga.train with a parser.

Usage:
    parser_orcatrain.py [options] FOLDER LIST CONFIG MODEL
    parser_orcatrain.py (-h | --help)

Arguments:
    FOLDER  Path to the folder where everything gets saved to, e.g. the
            summary.txt, the plots, the trained models, etc.
    LIST    A .toml file which contains the pathes of the training and
            validation files. An example can be found in
            examples/list_file.toml
    CONFIG  A .toml file which sets up the training. An example can be
            found in examples/config_file.toml. The possible parameters
            are listed in core.py in the class Configuration.
    MODEL   Path to a .toml file with infos about a model.
            An example can be found in examples/explanation.toml.

Options:
    -h --help    Show this screen.
    --recompile  Recompile the keras model, e.g. needed if the loss weights
                 are changed during the training.

"""
import warnings
from matplotlib import use
use('Agg')

from docopt import docopt
import tensorflow.keras as ks

from orcanet.core import Organizer
from orcanet.model_builder import ModelBuilder
from orcanet_contrib.orca_handler_util import orca_learning_rates, update_objects


[docs]def orca_train(output_folder, list_file, config_file, model_file, recompile_model=False): """ Run orga.train with predefined ModelBuilder networks using a parser. Parameters ---------- output_folder : str Path to the folder where everything gets saved to, e.g. the summary log file, the plots, the trained models, etc. list_file : str Path to a list file which contains pathes to all the h5 files that should be used for training and validation. config_file : str Path to a .toml file which overwrites some of the default settings for training and validating a model. model_file : str Path to a file with parameters to build a model of a predefined architecture with OrcaNet. recompile_model : bool If the model should be recompiled or not. Necessary, if e.g. the loss_weights are changed during the training. """ # Set up the Organizer with the input data orga = Organizer(output_folder, list_file, config_file, tf_log_level=1) # Load in the orga sample-, label-, and dataset-modifiers, as well as # the custom objects update_objects(orga, model_file) # If this is the start of the training, a compiled model needs to be # handed to the orga.train function if orga.io.get_latest_epoch() is None: # The ModelBuilder class allows to construct models from a toml file, # adapted to the datasets in the orga instance. Its modifiers will # be taken into account for this builder = ModelBuilder(model_file) model = builder.build(orga, log_comp_opts=True) elif recompile_model is True: builder = ModelBuilder(model_file) path_of_model = orga.io.get_model_path(-1, -1) model = ks.models.load_model(path_of_model, custom_objects=orga.cfg.get_custom_objects()) print("Recompiling the saved model") model = builder.compile_model(model, custom_objects=orga.cfg.get_custom_objects()) builder.log_model_properties(orga) else: model = None try: # Use a custom LR schedule user_lr = orga.cfg.learning_rate lr = orca_learning_rates(user_lr, orga.io.get_no_of_files("train")) orga.cfg.learning_rate = lr except NameError: pass # start the training orga.train_and_validate(model=model)
[docs]def main(): """ Run the orca_train function with a parser. """ warnings.warn("parser_orcatrain is deprecated! Use orcanet train instead.") args = docopt(__doc__) output_folder = args['FOLDER'] list_file = args['LIST'] config_file = args['CONFIG'] model_file = args['MODEL'] recompile_model = args['--recompile'] orca_train(output_folder, list_file, config_file, model_file, recompile_model=recompile_model)
if __name__ == '__main__': main()