为sknn使用python多处理
我使用的是Python sklearn包的开发版本和NN实现。 我的任务是用不同的输入数据和预测的平均值训练4个神经网络为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
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
模块获得更大的灵活性,但我通常只使用包装器,而不使用其他外部模块。