Я использую TensorFlow 1.12 в нетерпеливом исполнении.У меня есть вычислительно дорогая функция, которую я отображаю на этот набор данных, используя tf.Dataset.map()
.Внутри этой функции, которую я разработал, просто зацикливая на наборе данных в нетерпеливом исполнении, я конвертирую тензоры в массивы NumPy, используя EagerTensor.numpy()
.Поскольку предварительная обработка моего набора данных занимает слишком много времени, я теперь хочу многопоточность всей этой процедуры карты, используя tf.Dataset.map(myfunction, num_cores=30)
.Тем не менее, теперь myfunction()
больше не выполняется с нетерпением.Я попробовал две вещи: 1) обернуть myfunction()
с использованием tf.py_function
, в этом случае map()
больше не является многопоточным, и 2) открыть tf.Session
внутри myfunction()
и получить мой массив NumPy, используя .eval()
вместо.numpy()
, в этом случае мне нужно указать входные тензоры (я не понимаю, почему):
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'arg0' with dtype string
[[node arg0 (defined at /home/.../semantic_fpn.py:101) = Placeholder[dtype=DT_STRING, shape=<unknown>]]```
Is there an easy why for me to loop over my dataset with ```myfunction()``` (and its NumPy conversion) while multithreading/multiprocessing? I had additionally considered using a for-loop instead of ```.map()```, but I wouldn't know how to alter/write to records in a ```tf.Dataset```.