Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为sknn使用python多处理_Python_Machine Learning_Scikit Learn_Multiprocessing_Pool - Fatal编程技术网

为sknn使用python多处理

为sknn使用python多处理,python,machine-learning,scikit-learn,multiprocessing,pool,Python,Machine Learning,Scikit Learn,Multiprocessing,Pool,我使用的是Python sklearn包的开发版本和NN实现。 我的任务是用不同的输入数据和预测的平均值训练4个神经网络 X_median = preprocessing.scale(data_median) X_min = preprocessing.scale(data_min) X_max = preprocessing.scale(data_max) X_mean = preprocessing.scale(data_mean) 我创建了一个这样的神经网络 NN1 = MLPClass

我使用的是Python sklearn包的开发版本和NN实现。 我的任务是用不同的输入数据和预测的平均值训练4个神经网络

X_median = preprocessing.scale(data_median)
X_min = preprocessing.scale(data_min)
X_max = preprocessing.scale(data_max)
X_mean = preprocessing.scale(data_mean)
我创建了一个这样的神经网络

NN1 = MLPClassifier(hidden_layer_sizes = (50), activation = 'logistic', algorithm='adam', alpha= 0 , max_iter = 40, batch_size = 10, learning_rate = 'adaptive', shuffle = True, random_state=1)
NN2 = MLPClassifier(hidden_layer_sizes = (50), activation = 'logistic', algorithm='adam', alpha= 0 , max_iter = 40, batch_size = 10, learning_rate = 'adaptive', shuffle = True, random_state=1)
NN3 = MLPClassifier(hidden_layer_sizes = (50), activation = 'logistic', algorithm='adam', alpha= 0 , max_iter = 40, batch_size = 10, learning_rate = 'adaptive', shuffle = True, random_state=1)
NN4 = MLPClassifier(hidden_layer_sizes = (50), activation = 'logistic', algorithm='adam', alpha= 0 , max_iter = 40, batch_size = 10, learning_rate = 'adaptive', shuffle = True, random_state=1)
(标准学习功能)

我想对他们进行上述数据集的培训。 如果不使用池,我的代码将如下所示:

NN1.fit(X_mean,train_y)
NN2.fit(X_median,train_y)
NN3.fit(X_min,train_y)
NN4.fit(X_max,train_y)
pool = Pool()
pool.apply_async(NN1.fit, args = (X_mean, train_y))
当然,由于所有4个培训都是独立的,我想并行运行它们,我想我应该使用pool来实现这一点。然而,我并不完全理解计算是如何进行的。我会假设这样写:

NN1.fit(X_mean,train_y)
NN2.fit(X_median,train_y)
NN3.fit(X_min,train_y)
NN4.fit(X_max,train_y)
pool = Pool()
pool.apply_async(NN1.fit, args = (X_mean, train_y))
但是,这不会产生任何结果,我甚至可以像这样键入(只传递一个参数),程序将在没有任何错误的情况下完成!
pool.apply_async(NN1.fit,args=(X_mean,)

执行此类计算的正确方法是什么? 有人能建议好的资源来理解Python多处理的用法吗?

最后我让它工作起来了)

我的解决方案基于此。因此,首先创建两个帮助功能:

(一)

这只是为了使所需的函数成为提要池方法的全局函数

(二)

这是it-help函数的关键部分,用于获取1个参数并将其拆分为所需的适当数量的参数Myfunc

那就创造吧

mylist = [(NN_mean,X_mean, train_y), (NN_median,X_median, train_y)]
执行

NN_mean, NN_median = pool.map(test_star, my list).

在我看来,这个解决方案非常难看,但它是有效的。我希望有人能创建一个更优雅的,并发布:)。

对于
apply\u async
您需要提供一个回调,以便在计算完成时执行。我想你需要
apply()
,它在返回之前等待计算。事实上,似乎这样的代码可以完成这项工作:
def Myfunc(MyNN,X,train_y):MyNN.fit(X,train_y)return MyNN
然后
NN_mean=pool.apply(Myfunc,(NN,X,train_mean,train_y))
是的,
pool
对象只能以某种方式处理数据。您可以使用
pathos
模块获得更大的灵活性,但我通常只使用包装器,而不使用其他外部模块。