From 3b437bac092b07b77a84d75f4d709be28d2ca850 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Tue, 24 Mar 2020 19:11:43 +0100 Subject: [PATCH] Handling another pickle business --- bob/bio/base/config/examples/pca_mobio-male.py | 6 +++--- bob/bio/base/mixins/legacy.py | 18 ++++++++++++++++-- bob/bio/base/mixins/linearize.py | 5 +---- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/bob/bio/base/config/examples/pca_mobio-male.py b/bob/bio/base/config/examples/pca_mobio-male.py index 4d3e71a8..1998b7ff 100644 --- a/bob/bio/base/config/examples/pca_mobio-male.py +++ b/bob/bio/base/config/examples/pca_mobio-male.py @@ -9,8 +9,8 @@ from bob.bio.base.mixins.legacy import LegacyProcessorMixin, LegacyAlgorithmMixi from bob.bio.base.pipelines.vanilla_biometrics.legacy import LegacyBiometricAlgorithm import os -base_dir = "/idiap/temp/tpereira/mobio/pca" -#base_dir = "./example" +#base_dir = "/idiap/temp/tpereira/mobio/pca" +base_dir = "./example" original_directory=rc['bob.db.mobio.directory'] @@ -63,7 +63,7 @@ extractor = Pipeline(steps=[ ('1',CheckpointSampleLinearize(features_dir=os.path.join(base_dir,"extractor1"))), ('2',CheckpointSamplePCA(features_dir=os.path.join(base_dir,"extractor2"), model_path=os.path.join(base_dir,"pca.pkl"))) ]) -extractor = dask_it(extractor, npartitions=48) +extractor = dask_it(extractor, npartitions=3) from bob.bio.base.pipelines.vanilla_biometrics.biometric_algorithm import Distance, BiometricAlgorithmCheckpointMixin diff --git a/bob/bio/base/mixins/legacy.py b/bob/bio/base/mixins/legacy.py index d572d161..3cf0d70f 100644 --- a/bob/bio/base/mixins/legacy.py +++ b/bob/bio/base/mixins/legacy.py @@ -97,6 +97,14 @@ class LegacyProcessorMixin(TransformerMixin): X = check_array(X, allow_nd=True) return [self.instance(x) for x in X] + def __setstate__(self): + # Handling unpicklable objects + self.instance = None + + def __getstate__(self): + # Handling unpicklable objects + self.instance = None + from bob.pipelines.mixins import CheckpointMixin, SampleMixin class LegacyAlgorithmMixin(CheckpointMixin, SampleMixin, BaseEstimator): @@ -147,8 +155,6 @@ class LegacyAlgorithmMixin(CheckpointMixin, SampleMixin, BaseEstimator): # Organizing the date by class bob_X = scikit_to_bob_supervised(X, y) self.instance.train_projector(bob_X, self.projector_file) - else: - self.instance.train_projector(X, **fit_params) # Deleting the instance, so it's picklable self.instance = None @@ -198,6 +204,14 @@ class LegacyAlgorithmMixin(CheckpointMixin, SampleMixin, BaseEstimator): else: raise ValueError("Type not allowed %s" % type(X[0])) + def __setstate__(self): + # Handling unpicklable objects + self.instance = None + + def __getstate__(self): + # Handling unpicklable objects + self.instance = None + def get_reader(reader, path): if is_picklable(reader): diff --git a/bob/bio/base/mixins/linearize.py b/bob/bio/base/mixins/linearize.py index 9d676a47..03d07956 100644 --- a/bob/bio/base/mixins/linearize.py +++ b/bob/bio/base/mixins/linearize.py @@ -5,7 +5,7 @@ from bob.pipelines.mixins import CheckpointMixin, SampleMixin from sklearn.base import TransformerMixin -from sklearn.utils.validation import check_array, check_is_fitted +from sklearn.utils.validation import check_array import numpy @@ -15,9 +15,6 @@ class Linearize(TransformerMixin): If a ``dtype`` is specified in the contructor, it is assured that the resulting """ - def fit(self, X, y=None): - return self - def transform(self, X): """__call__(data) -> data -- GitLab