Skip to content
Snippets Groups Projects
Commit c0fbebe1 authored by Tim O'Donnell's avatar Tim O'Donnell
Browse files

Clearer output during training

parent 5b4dfbd2
No related merge requests found
......@@ -370,7 +370,8 @@ class Class1AffinityPredictor(object):
peptides,
affinities,
models_dir_for_save=None,
verbose=1):
verbose=1,
progress_preamble=""):
"""
Fit one or more allele specific predictors for a single allele using a
single neural network architecture.
......@@ -399,6 +400,9 @@ class Class1AffinityPredictor(object):
verbose : int
Keras verbosity
progress_preamble : string
Optional string of information to include in each progress update
Returns
-------
list of Class1NeuralNetwork
......@@ -411,7 +415,8 @@ class Class1AffinityPredictor(object):
peptides=peptides,
affinities=affinities,
allele_pseudosequences=None,
verbose=verbose)
verbose=verbose,
progress_preamble=progress_preamble)
if allele not in self.allele_to_allele_specific_models:
self.allele_to_allele_specific_models[allele] = []
......@@ -442,7 +447,8 @@ class Class1AffinityPredictor(object):
peptides,
affinities,
models_dir_for_save=None,
verbose=1):
verbose=1,
progress_preamble=""):
"""
Fit one or more pan-allele predictors using a single neural network
architecture.
......@@ -472,6 +478,9 @@ class Class1AffinityPredictor(object):
verbose : int
Keras verbosity
progress_preamble : string
Optional string of information to include in each progress update
Returns
-------
list of Class1NeuralNetwork
......@@ -486,7 +495,8 @@ class Class1AffinityPredictor(object):
peptides=peptides,
affinities=affinities,
allele_pseudosequences=allele_pseudosequences,
verbose=verbose)
verbose=verbose,
progress_preamble=progress_preamble)
for (i, model) in enumerate(models):
model_name = self.model_name("pan-class1", i)
......@@ -511,7 +521,8 @@ class Class1AffinityPredictor(object):
peptides,
affinities,
allele_pseudosequences,
verbose=1):
verbose=1,
progress_preamble = ""):
"""
Private helper method
......@@ -523,6 +534,8 @@ class Class1AffinityPredictor(object):
affinities : list of float
allele_pseudosequences : EncodableSequences or list of string
verbose : int
progress_preamble : string
Optional string of information to include in each progress update
Returns
-------
......@@ -536,7 +549,8 @@ class Class1AffinityPredictor(object):
encodable_peptides,
affinities,
allele_pseudosequences=allele_pseudosequences,
verbose=verbose)
verbose=verbose,
progress_preamble=progress_preamble)
yield model
def calibrate_percentile_ranks(
......
......@@ -317,7 +317,8 @@ class Class1NeuralNetwork(object):
affinities,
allele_pseudosequences=None,
sample_weights=None,
verbose=1):
verbose=1,
progress_preamble=""):
"""
Fit the neural network.
......@@ -338,6 +339,9 @@ class Class1NeuralNetwork(object):
verbose : int
Keras verbosity level
progress_preamble : string
Optional string of information to include in each progress update
"""
self.fit_num_points = len(peptides)
......@@ -453,11 +457,14 @@ class Class1NeuralNetwork(object):
self.loss_history[key].extend(value)
print(
"Epoch %3d / %3d: loss=%g. Min val loss at epoch %s" % (
i,
self.hyperparameters['max_epochs'],
self.loss_history['loss'][-1],
min_val_loss_iteration))
(
progress_preamble + " " +
"Epoch %3d / %3d: loss=%g. Min val loss (%s) at epoch %s" % (
i,
self.hyperparameters['max_epochs'],
self.loss_history['loss'][-1],
str(min_val_loss),
min_val_loss_iteration)).strip())
if self.hyperparameters['validation_split']:
val_loss = self.loss_history['val_loss'][-1]
......
......@@ -79,7 +79,7 @@ parser.add_argument(
"--verbosity",
type=int,
help="Keras verbosity. Default: %(default)s",
default=1)
default=0)
parser.add_argument(
"--parallelization-num-jobs",
default=1,
......@@ -172,6 +172,7 @@ def run(argv=sys.argv[1:]):
'allele': allele,
'sub_df': sub_df,
'hyperparameters': hyperparameters,
'verbose': args.verbosity,
'predictor': predictor if not worker_pool else None,
'save_to': args.out_models_dir if not worker_pool else None,
}
......@@ -220,22 +221,23 @@ def process_work(
allele,
sub_df,
hyperparameters,
verbose,
predictor,
save_to):
if predictor is None:
predictor = Class1AffinityPredictor()
print(
progress_preamble = (
"[%2d / %2d hyperparameters] "
"[%2d / %2d replicates] "
"[%4d / %4d alleles]: %s" % (
"[%4d / %4d alleles] "
"[%2d / %2d replicates]: %s " % (
hyperparameter_set_num + 1,
num_hyperparameter_sets,
model_group + 1,
n_models,
allele_num + 1,
n_alleles,
model_group + 1,
n_models,
allele))
train_data = sub_df.dropna().sample(frac=1.0)
......@@ -245,7 +247,9 @@ def process_work(
allele=allele,
peptides=train_data.peptide.values,
affinities=train_data.measurement_value.values,
models_dir_for_save=save_to)
models_dir_for_save=save_to,
progress_preamble=progress_preamble,
verbose=verbose)
return predictor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment