У меня есть cuda9-докер с установленным тензорным потоком и pytorch, я делаю перекрестную проверку для набора данных изображений. В настоящее время я использую цикл 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)))
Я не уверен, что мультипроцессор будет только парализовать процессор или оба процессора и gpu? Это может быть проще, чем параллельное выполнение модели, как я думаю, https://discuss.pytorch.org/t/parallelize-simple-for-loop-for-single-gpu/33701
так как в моем случае нет необходимости общаться через каждый процесс?