Я использую конвейер машинного обучения для сегментации очень больших трехмерных изображений.Я хотел бы сохранить результаты (массивы dask) в виде файлов .png, причем каждый файл соответствует одному срезу массива dask.Есть ли у вас какие-либо предложения о том, как это реализовать?
Я пытался сохранить результаты, построив параллель для цикла for, используя параллельный бэкэнд joblib dask, а затем перебирая результаты по частям по частям.Это работает нормально до определенной точки, в которой мой канал зависает без какой-либо видимой причины (нет проблем с памятью, слишком много открытых дескрипторов файлов и т. Д.).
array_to_save сохранен в памяти с помощью client.persist ()
with joblib.parallel_backend('dask'):
joblib.Parallel(verbose=100)(joblib.delayed(png_sav)(j, stack_height, client.compute(array_to_save[j])) for j in range(stack_height))
def png_sav(j, stack_height, prediction):
img = Image.fromarray(prediction.result().astype('uint32'), 'I') # I to save as 16 bit binary image
img.save(png_pn+str(j)+'_slice_prediction.png', "PNG")
img.close()