Моя ошибка похожа на массу вопросов, опубликованных, но ни одна из них не решила мою проблему.ТипError: не может разжечь объекты генератора для методов Non Generator
Итак, я пытался использовать параметр joblib Parallel &, отложенный для выполнения параллельной обработки, и функция, которую я хочу использовать, вызывает ошибку при травлении. Я сталкиваюсь следующее сообщение об ошибке:
TypeError: can't pickle generator objects
Теперь функция Defination выглядит следующим образом:
def checkProcess(self, param_set, x_train, y_train, x_test, y_test, scores):
t1 = dt.datetime.now()
self.__wrapper__(**param_set)
self.train_estimator(x_train, y_train)
predictions = self.generate_predictions(x_test)
score = self.generate_scores(predictions, y_test)
key = self.generate_key_from_dictionary(param_set)
scores[key] = score
if self.verbose:
print("Fitted Parameters {}. Total time {} seconds".format(list(param_set.items()),
(
dt.datetime.now() - t1).total_seconds()))
И, С ранее ошибка была поднята внутри замедленное функцию в joblib, я попытался вручную засолки :
pickle.dumps(self.checkProcess)
который поднял ту же ошибку. Тогда я попытался проверки погоды метод генератора (который явно не) с помощью:
import inspect
print(inspect.isgeneratorfunction(self.checkProcess))
И это возвращает ложных, как и ожидалось.
Теперь имя класса Перекрёстная Проверка, для которых метод checkProcess обязан. Я попытался рассол дамп с помощью
pickle.dumps(CrossValidation.checkProcess)
и она работала отлично, поэтому я попытался же за задержку вызова() с помощью:
Parallel(n_jobs=self.n_jobs, verbose=1)(delayed(CrossValidation.checkProcess, check_pickle=False)(param_set, x_train, y_train, x_test, y_test, scores) for param_set in param_combinations)
Тогда позиционного аргумент самого отсутствовало, что поднятые ошибки в количество аргументов не одинаково.
Чтобы преодолеть это, я вручную послал себя в качестве параметра с помощью:
Parallel(n_jobs=self.n_jobs, verbose=1)(delayed(CrossValidation.checkProcess, check_pickle=False)(self, param_set, x_train, y_train, x_test, y_test, scores) for param_set in param_combinations)
И это вернуло меня к той же ошибки, которые я упоминал в начале.
Моя мысль заключалась в том, что функция self.generate_key_from_dictionary (param_set) возвращает кортеж. Что может быть выведено как генератор, и, следовательно, попытался прокомментировать эти 2 заявления и снова запустить, но проблема все еще сохраняется.
Надеюсь, что вопрос не дублируется, и любая помощь будет оценена по достоинству, поскольку Parallel вызывает много проблем независимо от того, как я реализую.
Благодаря