【发布时间】:2019-09-20 04:14:29
【问题描述】:
我有一个安装了 tensorflow 和 pytorch 的 cuda9-docker,我正在对图像数据集进行交叉验证。目前我正在使用 for 循环进行交叉验证。类似的东西
for data_train, data_test in sklearn.kfold(5, all_data):
train(data_train)
test(data_test)
但是 for 循环耗时太长,下面的代码可以并行化 for 循环吗?也许已经有解决方案了。但这不是数据并行化。
from multiprocessing import Pool
def f(trainset, testset):
train_result = train(trainset)
test_result = test(testset)
save_train_result()
save_test_result()
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, sklearn.cvfold(5, all_data)))
我不确定多处理是否只会使 cpu 瘫痪或同时使 cpu 和 gpu 瘫痪?这可能比在我猜像https://discuss.pytorch.org/t/parallelize-simple-for-loop-for-single-gpu/33701 这样的模型中并行处理更容易 因为在我的情况下,不需要跨每个进程进行通信?
【问题讨论】: