Пример #1
0
    def generate_test_result(self,
                             test_collection: cri.CrCollection,
                             verbose=1,
                             save_to_instance_key=None,
                             exp_key=None,
                             verbose_short_name=None,
                             description='',
                             workers=4,
                             use_multiprocessing=False,
                             params=None) -> Result:
        """
        Genereates a Result based on predictions against test_collection.

        When save_to_instance_key is not None, the results are saved to
            <model_key>/<save_to_instance_key>/cr_result.json
        """
        model = self.get_model()
        test_gen = self.get_test_generator(test_collection)
        test_gen.reset()
        if (verbose):
            print('Generating predictions for {}'.format(
                self.get_key()).center(80, '-'))
        predictions = model.predict_generator(
            test_gen,
            steps=len(test_gen),
            workers=workers,
            use_multiprocessing=use_multiprocessing,
            verbose=1)

        cr_codes = cri.extract_cr_codes(test_gen.filenames)

        if verbose_short_name is None:
            short_name = self.get_key()
            short_name += ' analyzed on {}'.format(
                datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
        else:
            short_name = verbose_short_name

        if params is None:
            params = dict()
        result = Result.from_predictions(predictions, cr_codes, params,
                                         short_name, description)
        if save_to_instance_key:
            result.save(self.get_key(), save_to_instance_key, exp_key)
        return result