Проблема: Я пытаюсь запустить функцию параллельно, используя pathos.multiprocessing.Pool (). Код, который я написал, работает для небольших проблем, но не работает для больших проблем с этой ошибкой:
python2 .7 / site-packages / multiprocess / pool.py, строка 572, в get get self ._value struct.error: формат i требует -2147483648 <= число <= 2147483647 </p>
На этой странице обсуждается проблема ... python struct.error: формат 'i' требует - 2147483648 <= number <= 2147483647 </a> ... и в результате вышеизложенного я ввел глобальные переменные (training_data и некоторые параметры), чтобы избежать их передачи через pool.map (), и сделал fit_gpr () функцией void ( см код ниже). Это не решило проблему.
Вопрос: Кто-нибудь знает, какая строка / массив / функция в fit_gpr () вызывает сообщение об ошибке переполнения выше? Будучи новичком, я не был уверен, может ли это быть размер массивов, объем вычислений, выполняемых функциями sklearn, сброс моделей на диск или что-то еще. Любая помощь предложений будет принята с благодарностью.
Вот сокращенная версия кода:
from pathos.multiprocessing import Pool
import time, numpy as np
def create_neural_networks():
def fit_gpr(index):
# Gaussian Process Regression
# this uses the global variables training_data and options,
# and the sklearn functions C, RBF and GaussianProcessRegressor
scaling_bounds = options.training.GPR_scaling_range
RBF_length_scale = options.training.GPR_RBF_length_scale
RBF_length_bounds = options.training.GPR_RBF_length_bounds
constant_value = options.training.GPR_constant_value
constant_bounds = options.training.GPR_constant_bounds
n_restarts = options.training.GPR_n_restarts_optimizer
# get the training data
trainX = training_data[:-1,:]
trainY = np.atleast_2d(training_data[:,index]).T
# set up the GPR
kernel = C(constant_value, constant_bounds) * RBF(RBF_length_scale,RBF_length_bounds)
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=n_restarts)
# fit to the data
gp.fit(trainX, trainY)
# save the model
joblib.dump(gp, 'gpr_model_' + str(index) + '.sav')
return
N = 350
training_data = np.zeros((1705,N),dtype=np.float64) # global variable
pool = Pool(processes=40)
pool.map(fit_gpr, range(N))
return