Я испытываю странное поведение при использовании train_test_split в многопроцессорном пуле при запуске Python на Rasbperry Pi 3.
У меня есть что-то вроде этого:
def evaluate_Classifier(model,Features,Labels,split_ratio):
X_train, X_val, y_train, y_val = train_test_split(Features,Labels,test_size=split_ratio)
...
iterations=500
pool = multiprocessing.Pool(4)
results = [pool.apply_async(evaluate_Classifier, args=(w,Current_Features,Current_Labels,0.35)) for i in range(iterations)]
output = [p.get() for p in results]
pool.close()
pool.join()
Теперь вышеприведенный код отлично работает на Windows 7 Python 3.5.6, и, действительно, каждый из 4 потоков будет иметь различие в обучении / тестировании.
Однако, когда я запускаю его на Raspberry Pi 3 (scikit-learn 0.19.2), кажется, что 4 потока разделяют данные ТОЧНО одинаково, и поэтому все потоки дают одинаковый результат. Следующие 4 потока снова разделят данные (на этот раз по-разному), но между ними точно так же, и так далее ...
Я даже пытался использовать train_test_split с random_state = np.random.randint, но это не помогает.
Любые идеи, почему это работает в Windows, но на Raspberry Pi 3, похоже, не распараллеливается должным образом?
Большое спасибо