python - 使用 python 多重处理进行 sklearn NN

标签 python machine-learning scikit-learn multiprocessing pool

我正在使用带有 NN 实现的 Python sklearn 包的开发版本。 我的任务是使用不同的输入数据和预测的平均值来训练 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)

(标准sklearn函数)

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

NN1.fit(X_mean,train_y)
NN2.fit(X_median,train_y)
NN3.fit(X_min,train_y)
NN4.fit(X_max,train_y)

当然,由于所有 4 个训练都是独立的,我想并行运行它们,并且我认为我应该为此使用池。但是,我不完全理解计算是如何执行的。我假设会写这样的东西:

pool = Pool()
pool.apply_async(NN1.fit, args = (X_mean, train_y))

但是,这不会产生任何结果,我什至可以这样输入(仅传递一个参数),程序将完成,没有任何错误! pool.apply_async(NN1.fit, args = (X_mean,))

执行此类计算的正确方法是什么? 有人可以推荐一些好的资源来了解 Python 多处理的用法吗?

最佳答案

终于成功了)

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

1)

def Myfunc(MyNN,X,train_y):
MyBrain.fit(X,train_y)
return MyNN

这只是为了让所需的函数成为 feed 池方法的全局函数

2)

def test_star(a_b):
return Myfunc(*a_b)

这是它的关键部分 - 帮助函数接受 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).

从我的角度来看,这个解决方案非常丑陋,但它确实有效。我希望有人可以创建更优雅的一个并将其发布:)。

关于python - 使用 python 多重处理进行 sklearn NN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098316/

相关文章:

python - 在读取 Python 文件中的行时跳过前几行

python - 如何让聊天机器人开始监听调用它的名字?

python - PyGame:使用 pygame.sprite.LayeredUpdates()

python - keras CAE 检查目标 : expected conv2d_7 to have shape (252, 252、3) 时出错,但得到形状为 (256、256、3) 的数组

Python+SciKit -> 手动预测和 cross_val_score 预测的不同结果

python - 如何在 CV-ing 数据集时实现基于比率的 SMOTE 过采样

python - 用模拟对象替换类的元类

algorithm - 这项任务的正确机器学习算法是什么?

python - 如何检查 Tensorflow LinearClassifier 的特征权重?

python - 在线性回归中使用 PCA