In [1]:
!pip install hyperopt
Collecting hyperopt
Downloading https://files.pythonhosted.org/packages/0b/4a/79541d4f61e7878f846f68ab31ed709bac6ee99345378c0e02658c3be0d4/hyperopt-0.2.2-py3-none-any.whl (1.9MB)
|████████████████████████████████| 1.9MB 2.4MB/s eta 0:00:01
Collecting future
Downloading https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz (829kB)
|████████████████████████████████| 829kB 4.1MB/s eta 0:00:01
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from hyperopt) (1.11.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from hyperopt) (4.36.1)
Collecting networkx==2.2
Downloading https://files.pythonhosted.org/packages/f3/f4/7e20ef40b118478191cec0b58c3192f822cace858c19505c7670961b76b2/networkx-2.2.zip (1.7MB)
|████████████████████████████████| 1.7MB 4.6MB/s eta 0:00:01 |██████████████▉ | 788kB 4.6MB/s eta 0:00:01 |███████████████████████████▋ | 1.5MB 4.6MB/s eta 0:00:01
Requirement already satisfied: cloudpickle in /usr/local/lib/python3.6/dist-packages (from hyperopt) (1.2.2)
Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from hyperopt) (1.3.1)
Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from hyperopt) (1.17.3)
Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from networkx==2.2->hyperopt) (4.4.1)
Building wheels for collected packages: future, networkx
Building wheel for future (setup.py) ... done
Created wheel for future: filename=future-0.18.2-cp36-none-any.whl size=493275 sha256=b3366a5e29d26982cf6022c58c48fc08f51477ce419641863d6f7fad128ff75a
Stored in directory: /root/.cache/pip/wheels/8b/99/a0/81daf51dcd359a9377b110a8a886b3895921802d2fc1b2397e
Building wheel for networkx (setup.py) ... done
Created wheel for networkx: filename=networkx-2.2-py2.py3-none-any.whl size=1527657 sha256=d244b460e509d7853b7b34cab4811d10924c3f8932dacb031b414a001fd01dc7
Stored in directory: /root/.cache/pip/wheels/68/f8/29/b53346a112a07d30a5a84d53f19aeadaa1a474897c0423af91
Successfully built future networkx
Installing collected packages: future, networkx, hyperopt
Found existing installation: networkx 2.3
Uninstalling networkx-2.3:
Successfully uninstalled networkx-2.3
Successfully installed future-0.18.2 hyperopt-0.2.2 networkx-2.2
In [2]:
import warnings
warnings.simplefilter('ignore')
from ludwig.api import LudwigModel
from ludwig.utils.data_utils import load_json
from ludwig.visualize import learning_curves
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from hyperopt import fmin, tpe, hp, STATUS_OK, Trials
from hyperopt.pyll.stochastic import rng_from_seed
import logging
import shutil
import tempfile
WARNING:tensorflow:
The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
* https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
* https://github.com/tensorflow/addons
* https://github.com/tensorflow/io (for I/O related ops)
If you depend on functionality not listed there, please file an issue.
In [3]:
raw_df = pd.read_csv('./data/winequalityN.csv')
raw_df.shape
Out[3]:
(6497, 13)
In [4]:
new_col = []
for i in range(len(raw_df.columns)):
new_col.append(raw_df.columns[i].replace(' ', '_'))
raw_df.columns = new_col
In [5]:
raw_df.dtypes
Out[5]:
type object
fixed_acidity float64
volatile_acidity float64
citric_acid float64
residual_sugar float64
chlorides float64
free_sulfur_dioxide float64
total_sulfur_dioxide float64
density float64
pH float64
sulphates float64
alcohol float64
quality int64
dtype: object
In [6]:
train_df, vald_df = train_test_split(raw_df, test_size = 0.2, random_state=13, stratify=raw_df['quality'])
print(train_df.shape, vald_df.shape)
(5197, 13) (1300, 13)
In [7]:
train_df['quality'].value_counts().sort_index()
Out[7]:
3 24
4 173
5 1710
6 2269
7 863
8 154
9 4
Name: quality, dtype: int64
In [8]:
vald_df['quality'].value_counts().sort_index()
Out[8]:
3 6
4 43
5 428
6 567
7 216
8 39
9 1
Name: quality, dtype: int64
In [9]:
# isolate the predictor variables only
predictor_vars = list(set(raw_df.columns) - set(['quality']))
#extract categorical variables
categorical_vars = []
for p in predictor_vars:
if raw_df[p].dtype == 'object':
categorical_vars.append(p)
print("categorical variables:", categorical_vars,'\n')
# get numerical variables
numerical_vars = list(set(predictor_vars) - set(categorical_vars))
print("numerical variables:", numerical_vars,"\n")
categorical variables: ['type']
numerical variables: ['density', 'residual_sugar', 'pH', 'total_sulfur_dioxide', 'volatile_acidity', 'sulphates', 'citric_acid', 'alcohol', 'free_sulfur_dioxide', 'fixed_acidity', 'chlorides']
In [10]:
train_df.describe().T
Out[10]:
count
mean
std
min
25%
50%
75%
max
fixed_acidity
5189.0
7.198824
1.282347
3.80000
6.4000
7.0000
7.7000
15.60000
volatile_acidity
5191.0
0.338963
0.165157
0.08000
0.2300
0.2900
0.4000
1.58000
citric_acid
5194.0
0.319174
0.146128
0.00000
0.2500
0.3100
0.4000
1.66000
residual_sugar
5195.0
5.424562
4.762894
0.60000
1.8000
3.0000
8.0000
65.80000
chlorides
5195.0
0.056116
0.035789
0.00900
0.0380
0.0470
0.0640
0.61100
free_sulfur_dioxide
5197.0
30.656821
17.912418
1.00000
17.0000
29.0000
42.0000
289.00000
total_sulfur_dioxide
5197.0
116.046180
56.504786
6.00000
78.0000
119.0000
156.0000
440.00000
density
5197.0
0.994672
0.003008
0.98711
0.9923
0.9948
0.9969
1.03898
pH
5189.0
3.218979
0.160672
2.72000
3.1100
3.2100
3.3200
4.01000
sulphates
5193.0
0.530924
0.147341
0.22000
0.4300
0.5100
0.6000
2.00000
alcohol
5197.0
10.492117
1.187004
8.00000
9.5000
10.3000
11.3000
14.20000
quality
5197.0
5.818164
0.873126
3.00000
5.0000
6.0000
6.0000
9.00000
In [11]:
for p in categorical_vars:
print("unique values for",p,"is",train_df[p].nunique())
unique values for type is 2
In [12]:
# template for model definition
model_definition = {'input_features':[], 'output_features': [], 'training':{}}
# setup input features for categorical variables
for p in categorical_vars:
a_feature = {'name': p.replace(' ','_'), 'type': 'category', 'representation': 'sparse'}
model_definition['input_features'].append(a_feature)
# setup input features for numerical variables
for p in numerical_vars:
a_feature = {'name': p.replace(' ','_'), 'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean', 'normalization': 'zscore'}}
model_definition['input_features'].append(a_feature)
# set up output variable
model_definition['output_features'].append({'name': 'quality', 'type':'category'})
In [13]:
# View the model defintion
print("model definition:")
model_definition
model definition:
Out[13]:
{'input_features': [{'name': 'type',
'type': 'category',
'representation': 'sparse'},
{'name': 'density',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'residual_sugar',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'pH',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'total_sulfur_dioxide',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'volatile_acidity',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'sulphates',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'citric_acid',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'alcohol',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'free_sulfur_dioxide',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'fixed_acidity',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}},
{'name': 'chlorides',
'type': 'numerical',
'preprocessing': {'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'}}],
'output_features': [{'name': 'quality', 'type': 'category'}],
'training': {}}
In [14]:
# objective for hyperopt to minimize
def score_model(params):
print(params)
model_definition['training']['learning_rate'] = params['learning_rate']
model_definition['training']['batch_size'] = params['batch_size']
model_definition['output_features'][0]['num_fc_layers'] = np.int(params['output_fc_num_layers'])
model_definition['output_features'][0]['fc_size'] = np.int(params['output_fc_size'])
model = LudwigModel(model_definition,
logging_level=logging.WARN)
with tempfile.TemporaryDirectory() as tmpdirname:
train_stats = model.train(data_train_df = train_df,
data_validation_df = vald_df,
skip_save_training_description=True,
skip_save_training_statistics=True,
skip_save_model=True,
skip_save_progress=True,
skip_save_log=True,
skip_save_processed_input=True,
output_directory=tmpdirname,
random_seed=42)
model.close()
# return validation loss for last epoch as objective function value
validation_losses = train_stats['validation']['quality']['loss']
last_epoch = len(validation_losses)
return {'loss': validation_losses[last_epoch - 1], 'status': STATUS_OK}
In [15]:
SEED=13
# function to calculate batch size
set_batch_size = lambda n: 2**(n + 5)
space = {'learning_rate': hp.loguniform('learning_rate', np.log(0.0001), np.log(0.01), rng=rng_from_seed(SEED)),
'batch_size': set_batch_size(hp.randint('batch_size_exponent',3, rng=rng_from_seed(SEED))),
'output_fc_num_layers': hp.quniform('output_fc_num_layers',1,5,1, rng=rng_from_seed(SEED)),
'output_fc_size': hp.quniform('output_fc_size',5,200,1, rng=rng_from_seed(SEED))
}
In [16]:
np.random.seed(123)
best = fmin(fn=score_model,
space=space,
algo=tpe.suggest,
max_evals=30)
{'batch_size': 128, 'learning_rate': 0.002121499561203549, 'output_fc_num_layers': 5.0, 'output_fc_size': 38.0}
0%| | 0/30 [00:00<?, ?it/s, best loss: ?]WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
WARNING:tensorflow:From /opt/project/ludwig/utils/tf_utils.py:78: The name tf.GPUOptions is deprecated. Please use tf.compat.v1.GPUOptions instead.
{'batch_size': 128, 'learning_rate': 0.0001932355473302646, 'output_fc_num_layers': 1.0, 'output_fc_size': 10.0}
{'batch_size': 64, 'learning_rate': 0.0011513381010027587, 'output_fc_num_layers': 4.0, 'output_fc_size': 178.0}
{'batch_size': 128, 'learning_rate': 0.0030349889924213566, 'output_fc_num_layers': 3.0, 'output_fc_size': 47.0}
{'batch_size': 32, 'learning_rate': 0.002983993494062495, 'output_fc_num_layers': 2.0, 'output_fc_size': 93.0}
{'batch_size': 128, 'learning_rate': 0.00036977719556510557, 'output_fc_num_layers': 3.0, 'output_fc_size': 146.0}
{'batch_size': 64, 'learning_rate': 0.003544448527411323, 'output_fc_num_layers': 3.0, 'output_fc_size': 47.0}
{'batch_size': 128, 'learning_rate': 0.00013059206203058915, 'output_fc_num_layers': 4.0, 'output_fc_size': 125.0}
{'batch_size': 128, 'learning_rate': 0.004770174876117405, 'output_fc_num_layers': 3.0, 'output_fc_size': 125.0}
{'batch_size': 32, 'learning_rate': 0.0028099921871339376, 'output_fc_num_layers': 5.0, 'output_fc_size': 6.0}
{'batch_size': 128, 'learning_rate': 0.0003373883766353845, 'output_fc_num_layers': 5.0, 'output_fc_size': 83.0}
{'batch_size': 128, 'learning_rate': 0.0028522132785682944, 'output_fc_num_layers': 4.0, 'output_fc_size': 59.0}
{'batch_size': 32, 'learning_rate': 0.0004985648058438576, 'output_fc_num_layers': 4.0, 'output_fc_size': 96.0}
{'batch_size': 64, 'learning_rate': 0.0018524870197567224, 'output_fc_num_layers': 5.0, 'output_fc_size': 88.0}
{'batch_size': 64, 'learning_rate': 0.0004940368336988511, 'output_fc_num_layers': 1.0, 'output_fc_size': 94.0}
{'batch_size': 64, 'learning_rate': 0.002928134814352245, 'output_fc_num_layers': 1.0, 'output_fc_size': 160.0}
{'batch_size': 32, 'learning_rate': 0.0006792461926911531, 'output_fc_num_layers': 2.0, 'output_fc_size': 27.0}
{'batch_size': 128, 'learning_rate': 0.004316304089115418, 'output_fc_num_layers': 5.0, 'output_fc_size': 175.0}
{'batch_size': 128, 'learning_rate': 0.00028102044681709693, 'output_fc_num_layers': 1.0, 'output_fc_size': 121.0}
{'batch_size': 64, 'learning_rate': 0.0001859993909108718, 'output_fc_num_layers': 3.0, 'output_fc_size': 14.0}
{'batch_size': 128, 'learning_rate': 0.00010793095193641285, 'output_fc_num_layers': 4.0, 'output_fc_size': 72.0}
{'batch_size': 128, 'learning_rate': 0.00011420915477535684, 'output_fc_num_layers': 4.0, 'output_fc_size': 198.0}
{'batch_size': 128, 'learning_rate': 0.00020589898492099276, 'output_fc_num_layers': 5.0, 'output_fc_size': 119.0}
{'batch_size': 128, 'learning_rate': 0.0001292761479211032, 'output_fc_num_layers': 4.0, 'output_fc_size': 138.0}
{'batch_size': 128, 'learning_rate': 0.0011140069142692238, 'output_fc_num_layers': 5.0, 'output_fc_size': 74.0}
{'batch_size': 128, 'learning_rate': 0.00030042700536880406, 'output_fc_num_layers': 4.0, 'output_fc_size': 116.0}
{'batch_size': 32, 'learning_rate': 0.0007752456398075654, 'output_fc_num_layers': 5.0, 'output_fc_size': 109.0}
{'batch_size': 128, 'learning_rate': 0.00014692093508200942, 'output_fc_num_layers': 4.0, 'output_fc_size': 141.0}
{'batch_size': 128, 'learning_rate': 0.0015452350853066895, 'output_fc_num_layers': 5.0, 'output_fc_size': 83.0}
{'batch_size': 128, 'learning_rate': 0.00026690314296376, 'output_fc_num_layers': 2.0, 'output_fc_size': 68.0}
100%|██████████| 30/30 [06:21<00:00, 12.72s/it, best loss: 1.005780498798077]
In [17]:
print('batch size:', set_batch_size(best['batch_size_exponent']),
', learning_rate:', best['learning_rate'],
', fc_num_layers:', np.int(best['output_fc_num_layers']),
', fc_size:', np.int(best['output_fc_size']))
batch size: 128 , learning_rate: 0.00013059206203058915 , fc_num_layers: 4 , fc_size: 125
In [18]:
# clean out old results
try:
shutil.rmtree('./results')
except:
pass
try:
shutil.rmtree('./visualizations')
except:
pass
In [19]:
# set optimal hyperparameters for training
model_definition['training']['learning_rate'] = best['learning_rate']
model_definition['training']['batch_size'] = set_batch_size(best['batch_size_exponent'])
model_definition['output_features'][0]['num_fc_layers'] = np.int(best['output_fc_num_layers'])
model_definition['output_features'][0]['fc_size'] = np.int(best['output_fc_size'])
# Define Ludwig model object that drive model training
model = LudwigModel(model_definition,
logging_level=logging.INFO)
# initiate model training
opt_stats = model.train(data_df = raw_df,
experiment_name='hyperparameter_training',
model_name='optimized_model',
random_seed=42)
model.close()
Experiment name: hyperparameter_training
Model name: optimized_model
Output path: results/hyperparameter_training_optimized_model
ludwig_version: '0.2.1'
command: ('/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py -f '
'/root/.local/share/jupyter/runtime/kernel-6a906e2e-843a-4552-a26a-71486d0f3bcc.json')
commit_hash: '8a9da7d4e494'
random_seed: 42
model_definition: { 'combiner': {'type': 'concat'},
'input_features': [ { 'name': 'type',
'representation': 'sparse',
'tied_weights': None,
'type': 'category'},
{ 'name': 'density',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'residual_sugar',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'pH',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'total_sulfur_dioxide',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'volatile_acidity',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'sulphates',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'citric_acid',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'alcohol',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'free_sulfur_dioxide',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'fixed_acidity',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'},
{ 'name': 'chlorides',
'preprocessing': { 'missing_value_strategy': 'fill_with_mean',
'normalization': 'zscore'},
'tied_weights': None,
'type': 'numerical'}],
'output_features': [ { 'dependencies': [],
'fc_size': 125,
'loss': { 'class_similarities_temperature': 0,
'class_weights': 1,
'confidence_penalty': 0,
'distortion': 1,
'labels_smoothing': 0,
'negative_samples': 0,
'robust_lambda': 0,
'sampler': None,
'type': 'softmax_cross_entropy',
'unique': False,
'weight': 1},
'name': 'quality',
'num_fc_layers': 4,
'reduce_dependencies': 'sum',
'reduce_input': 'sum',
'top_k': 3,
'type': 'category'}],
'preprocessing': { 'audio': { 'audio_feature': {'type': 'raw'},
'audio_file_length_limit_in_s': 7.5,
'in_memory': True,
'missing_value_strategy': 'backfill',
'norm': None,
'padding_value': 0},
'bag': { 'fill_value': '',
'lowercase': False,
'missing_value_strategy': 'fill_with_const',
'most_common': 10000,
'tokenizer': 'space'},
'binary': { 'fill_value': 0,
'missing_value_strategy': 'fill_with_const'},
'category': { 'fill_value': '<UNK>',
'lowercase': False,
'missing_value_strategy': 'fill_with_const',
'most_common': 10000},
'date': { 'datetime_format': None,
'fill_value': '',
'missing_value_strategy': 'fill_with_const'},
'force_split': False,
'h3': { 'fill_value': 576495936675512319,
'missing_value_strategy': 'fill_with_const'},
'image': { 'in_memory': True,
'missing_value_strategy': 'backfill',
'num_processes': 1,
'resize_method': 'interpolate',
'scaling': 'pixel_normalization'},
'numerical': { 'fill_value': 0,
'missing_value_strategy': 'fill_with_const',
'normalization': None},
'sequence': { 'fill_value': '',
'lowercase': False,
'missing_value_strategy': 'fill_with_const',
'most_common': 20000,
'padding': 'right',
'padding_symbol': '<PAD>',
'sequence_length_limit': 256,
'tokenizer': 'space',
'unknown_symbol': '<UNK>',
'vocab_file': None},
'set': { 'fill_value': '',
'lowercase': False,
'missing_value_strategy': 'fill_with_const',
'most_common': 10000,
'tokenizer': 'space'},
'split_probabilities': (0.7, 0.1, 0.2),
'stratify': None,
'text': { 'char_most_common': 70,
'char_sequence_length_limit': 1024,
'char_tokenizer': 'characters',
'char_vocab_file': None,
'fill_value': '',
'lowercase': True,
'missing_value_strategy': 'fill_with_const',
'padding': 'right',
'padding_symbol': '<PAD>',
'unknown_symbol': '<UNK>',
'word_most_common': 20000,
'word_sequence_length_limit': 256,
'word_tokenizer': 'space_punct',
'word_vocab_file': None},
'timeseries': { 'fill_value': '',
'missing_value_strategy': 'fill_with_const',
'padding': 'right',
'padding_value': 0,
'timeseries_length_limit': 256,
'tokenizer': 'space'},
'vector': { 'fill_value': '',
'missing_value_strategy': 'fill_with_const'}},
'training': { 'batch_size': 128,
'bucketing_field': None,
'decay': False,
'decay_rate': 0.96,
'decay_steps': 10000,
'dropout_rate': 0.0,
'early_stop': 5,
'epochs': 100,
'eval_batch_size': 0,
'gradient_clipping': None,
'increase_batch_size_on_plateau': 0,
'increase_batch_size_on_plateau_max': 512,
'increase_batch_size_on_plateau_patience': 5,
'increase_batch_size_on_plateau_rate': 2,
'learning_rate': 0.00013059206203058915,
'learning_rate_warmup_epochs': 1,
'optimizer': { 'beta1': 0.9,
'beta2': 0.999,
'epsilon': 1e-08,
'type': 'adam'},
'reduce_learning_rate_on_plateau': 0,
'reduce_learning_rate_on_plateau_patience': 5,
'reduce_learning_rate_on_plateau_rate': 0.5,
'regularization_lambda': 0,
'regularizer': 'l2',
'staircase': False,
'validation_field': 'combined',
'validation_measure': 'loss'}}
Using full dataframe
Building dataset (it may take a while)
Training set: 4588
Validation set: 612
Test set: 1297
╒══════════╕
│ TRAINING │
╘══════════╛
Epoch 1
Took 0.6718s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.5322 │ 0.4370 │ 0.8520 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.4503 │ 0.4673 │ 0.8480 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.5337 │ 0.4379 │ 0.8597 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 2
Took 0.3488s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.2979 │ 0.4911 │ 0.9316 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.2184 │ 0.5114 │ 0.9428 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.3005 │ 0.5035 │ 0.9314 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 3
Took 0.2980s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.2258 │ 0.5211 │ 0.9374 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.1597 │ 0.5310 │ 0.9461 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.2346 │ 0.5266 │ 0.9375 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 4
Took 0.3144s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.1777 │ 0.5349 │ 0.9435 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.1230 │ 0.5343 │ 0.9510 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.1916 │ 0.5443 │ 0.9429 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 5
Took 0.2701s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.1425 │ 0.5453 │ 0.9464 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0972 │ 0.5588 │ 0.9575 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.1606 │ 0.5613 │ 0.9483 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 6
Took 0.2676s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.1152 │ 0.5525 │ 0.9490 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0778 │ 0.5621 │ 0.9592 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.1375 │ 0.5574 │ 0.9491 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 7
Took 0.2988s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0924 │ 0.5604 │ 0.9518 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0628 │ 0.5572 │ 0.9608 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.1190 │ 0.5574 │ 0.9522 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 8
Took 0.2977s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0730 │ 0.5673 │ 0.9540 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0508 │ 0.5605 │ 0.9624 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.1039 │ 0.5590 │ 0.9561 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 9
Took 0.2784s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0560 │ 0.5708 │ 0.9571 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0415 │ 0.5605 │ 0.9624 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0915 │ 0.5621 │ 0.9599 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 10
Took 0.2968s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0411 │ 0.5809 │ 0.9586 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0342 │ 0.5556 │ 0.9624 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0812 │ 0.5628 │ 0.9622 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 11
Took 0.3113s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0276 │ 0.5833 │ 0.9588 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0274 │ 0.5637 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0720 │ 0.5682 │ 0.9622 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 12
Took 0.3066s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0152 │ 0.5883 │ 0.9595 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0216 │ 0.5654 │ 0.9657 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0645 │ 0.5713 │ 0.9622 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 13
Took 0.3033s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 1.0037 │ 0.5898 │ 0.9605 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0167 │ 0.5654 │ 0.9641 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0575 │ 0.5806 │ 0.9607 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 14
Took 0.2957s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9928 │ 0.5959 │ 0.9616 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0122 │ 0.5703 │ 0.9641 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0512 │ 0.5783 │ 0.9614 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 15
Took 0.3080s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9826 │ 0.6022 │ 0.9623 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0084 │ 0.5719 │ 0.9657 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0453 │ 0.5821 │ 0.9638 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 16
Took 0.2856s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9731 │ 0.6066 │ 0.9629 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0051 │ 0.5686 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0401 │ 0.5790 │ 0.9653 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 17
Took 0.2788s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9642 │ 0.6114 │ 0.9632 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 1.0023 │ 0.5719 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0354 │ 0.5821 │ 0.9653 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 18
Took 0.3112s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9557 │ 0.6162 │ 0.9634 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9999 │ 0.5752 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0311 │ 0.5821 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 19
Took 0.2916s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9475 │ 0.6190 │ 0.9634 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9977 │ 0.5735 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0273 │ 0.5821 │ 0.9653 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 20
Took 0.3009s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9398 │ 0.6199 │ 0.9636 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9959 │ 0.5752 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0238 │ 0.5844 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 21
Took 0.2821s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9324 │ 0.6223 │ 0.9643 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9946 │ 0.5768 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0206 │ 0.5837 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 22
Took 0.2982s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9252 │ 0.6238 │ 0.9647 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9933 │ 0.5801 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0176 │ 0.5837 │ 0.9638 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 23
Took 0.2854s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9184 │ 0.6282 │ 0.9649 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9921 │ 0.5817 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0148 │ 0.5821 │ 0.9630 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 24
Took 0.3122s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9116 │ 0.6301 │ 0.9662 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9911 │ 0.5850 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0122 │ 0.5813 │ 0.9630 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 25
Took 0.3158s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.9053 │ 0.6323 │ 0.9680 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9898 │ 0.5833 │ 0.9673 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0100 │ 0.5813 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 26
Took 0.3006s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8992 │ 0.6369 │ 0.9688 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9889 │ 0.5817 │ 0.9690 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0080 │ 0.5813 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 27
Took 0.2874s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8933 │ 0.6421 │ 0.9693 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9877 │ 0.5833 │ 0.9690 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0064 │ 0.5821 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 28
Took 0.3023s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8873 │ 0.6458 │ 0.9693 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9864 │ 0.5882 │ 0.9690 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0044 │ 0.5813 │ 0.9645 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 29
Took 0.2889s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8817 │ 0.6502 │ 0.9701 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9852 │ 0.5899 │ 0.9706 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0028 │ 0.5813 │ 0.9638 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 30
Took 0.3050s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8762 │ 0.6528 │ 0.9701 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9841 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 1.0011 │ 0.5837 │ 0.9653 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 31
Took 0.2835s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8707 │ 0.6550 │ 0.9712 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9833 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9997 │ 0.5867 │ 0.9653 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 32
Took 0.2941s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8655 │ 0.6567 │ 0.9717 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9821 │ 0.5964 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9983 │ 0.5837 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 33
Took 0.3024s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8602 │ 0.6587 │ 0.9728 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9814 │ 0.5948 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9974 │ 0.5860 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 34
Took 0.2891s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8549 │ 0.6635 │ 0.9732 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9803 │ 0.5948 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9965 │ 0.5898 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 35
Took 0.2798s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8498 │ 0.6652 │ 0.9738 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9796 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9954 │ 0.5898 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 36
Took 0.2902s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8448 │ 0.6652 │ 0.9738 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9791 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9946 │ 0.5906 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 37
Took 0.2972s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8398 │ 0.6707 │ 0.9738 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9785 │ 0.5915 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9935 │ 0.5906 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 38
Took 0.2864s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8350 │ 0.6713 │ 0.9745 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9780 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9929 │ 0.5914 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 39
Took 0.3003s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8301 │ 0.6746 │ 0.9747 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9774 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9922 │ 0.5914 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 40
Took 0.2877s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8254 │ 0.6757 │ 0.9754 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9766 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9916 │ 0.5929 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 41
Took 0.3022s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8208 │ 0.6774 │ 0.9758 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9766 │ 0.5915 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9909 │ 0.5921 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 42
Took 0.3047s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8161 │ 0.6785 │ 0.9758 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9760 │ 0.5931 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9906 │ 0.5921 │ 0.9661 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 43
Took 0.2933s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8116 │ 0.6803 │ 0.9760 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9757 │ 0.5915 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9903 │ 0.5929 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 44
Took 0.2908s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8072 │ 0.6824 │ 0.9760 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9754 │ 0.5915 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9898 │ 0.5944 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 45
Took 0.2885s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.8026 │ 0.6857 │ 0.9758 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9752 │ 0.5915 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9896 │ 0.5929 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 46
Took 0.3088s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7980 │ 0.6885 │ 0.9758 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9747 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9892 │ 0.5929 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 47
Took 0.2830s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7936 │ 0.6916 │ 0.9760 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9748 │ 0.5931 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9891 │ 0.5944 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 48
Took 0.2924s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7891 │ 0.6951 │ 0.9762 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9747 │ 0.5948 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9890 │ 0.5960 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 49
Took 0.2913s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7847 │ 0.6975 │ 0.9762 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9744 │ 0.5948 │ 0.9755 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9890 │ 0.5975 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 50
Took 0.3020s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7804 │ 0.6992 │ 0.9767 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9739 │ 0.5948 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9886 │ 0.5983 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 51
Took 0.2864s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7761 │ 0.7016 │ 0.9765 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9736 │ 0.5964 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9885 │ 0.6006 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 52
Took 0.2818s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7719 │ 0.7027 │ 0.9762 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9740 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9885 │ 0.5983 │ 0.9668 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 53
Took 0.2902s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7675 │ 0.7042 │ 0.9762 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9735 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9882 │ 0.5968 │ 0.9676 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 54
Took 0.2958s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7633 │ 0.7062 │ 0.9765 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9734 │ 0.5915 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9878 │ 0.5975 │ 0.9676 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 55
Took 0.3088s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7591 │ 0.7071 │ 0.9769 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9730 │ 0.5882 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9879 │ 0.5960 │ 0.9676 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 56
Took 0.2993s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7550 │ 0.7121 │ 0.9776 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9730 │ 0.5899 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9878 │ 0.5960 │ 0.9676 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 57
Took 0.4223s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7507 │ 0.7121 │ 0.9782 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9730 │ 0.5915 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9876 │ 0.5944 │ 0.9676 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 58
Took 0.3166s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7465 │ 0.7147 │ 0.9780 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9729 │ 0.5899 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9876 │ 0.5975 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 59
Took 0.2683s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7424 │ 0.7173 │ 0.9780 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9728 │ 0.5931 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9875 │ 0.5983 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 60
Took 0.2856s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7382 │ 0.7197 │ 0.9782 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9727 │ 0.5915 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9872 │ 0.5983 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 61
Took 0.2898s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7339 │ 0.7221 │ 0.9795 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9728 │ 0.5899 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9871 │ 0.5983 │ 0.9692 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 62
Took 0.2945s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7299 │ 0.7265 │ 0.9804 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9727 │ 0.5866 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9873 │ 0.6014 │ 0.9692 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 63
Took 0.2795s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7259 │ 0.7267 │ 0.9804 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9726 │ 0.5866 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9873 │ 0.5983 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 64
Took 0.2899s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7217 │ 0.7289 │ 0.9806 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9726 │ 0.5882 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9877 │ 0.5998 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 65
Took 0.3012s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7176 │ 0.7297 │ 0.9813 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9727 │ 0.5882 │ 0.9722 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9876 │ 0.6022 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 2 epochs ago
Epoch 66
Took 0.3000s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7136 │ 0.7319 │ 0.9817 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9727 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9881 │ 0.6029 │ 0.9692 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 3 epochs ago
Epoch 67
Took 0.2774s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7095 │ 0.7332 │ 0.9819 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9725 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9881 │ 0.5975 │ 0.9692 │
╘═══════════╧════════╧════════════╧═════════════╛
Validation loss on combined improved, model saved
Epoch 68
Took 0.2839s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7054 │ 0.7356 │ 0.9823 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9725 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9886 │ 0.5991 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 1 epoch ago
Epoch 69
Took 0.3071s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.7014 │ 0.7371 │ 0.9826 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9726 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9884 │ 0.5983 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 2 epochs ago
Epoch 70
Took 0.2865s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.6974 │ 0.7380 │ 0.9830 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9728 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9887 │ 0.5975 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 3 epochs ago
Epoch 71
Took 0.3261s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.6934 │ 0.7398 │ 0.9834 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9730 │ 0.5850 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9890 │ 0.5975 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 4 epochs ago
Epoch 72
Took 0.2950s
╒═══════════╤════════╤════════════╤═════════════╕
│ quality │ loss │ accuracy │ hits_at_k │
╞═══════════╪════════╪════════════╪═════════════╡
│ train │ 0.6893 │ 0.7411 │ 0.9839 │
├───────────┼────────┼────────────┼─────────────┤
│ vali │ 0.9727 │ 0.5866 │ 0.9739 │
├───────────┼────────┼────────────┼─────────────┤
│ test │ 0.9891 │ 0.6006 │ 0.9684 │
╘═══════════╧════════╧════════════╧═════════════╛
Last improvement of loss on combined happened 5 epochs ago
EARLY STOPPING due to lack of validation improvement, it has been 5 epochs since last validation accuracy improvement
Best validation model epoch: 67
Best validation model loss on validation set combined: 0.9725200428682215
Best validation model loss on test set combined: 0.9880656865163316
Finished: hyperparameter_training_optimized_model
Saved to: results/hyperparameter_training_optimized_model
In [20]:
# generating learning curves from training
learning_curves([opt_stats], 'quality',
model_names=['optmized_model'],
output_directory='./visualizations',
file_format='png')
In [ ]:
Content source: uber/ludwig
Similar notebooks: