У меня есть несколько tfrecord
файлов, которые я загружаю в TFRecordDataset
и затем пытаюсь перейти на dataset.map
. В этом наборе данных много данных, и я просто пытаюсь извлечь изображение и двухмерные ограничивающие рамки из каждой записи. Я использую набор данных Waymo и его API для извлечения данных.
Чтобы извлечь эту информацию с помощью API Waymo, мне нужно преобразовать Tensor в массив numpy. Я вызываю свою функцию карты следующим образом:
dataset.map(read_tfrecord, num_parallel_calls=4)
функция отображения здесь
@tf.function
def read_tfrecord(example):
image, true_boxes = tf.py_function(read_tfrecord_np, [example], tf.float32)
return image, true_boxes
Моя read_tfrecord_np
функция выглядит как
def read_tfrecord_np(example):
frame = open_dataset.Frame()
frame.ParseFromString(bytearray(example.numpy()))
...
return front_image, true_boxes
Вот трассировка стека
тензор потока. python .framework.errors_impl.OperatorNotAllowedInGraphError: в преобразованном коде: train.py:66 read_tfrecord *
true_boxes, image = tf.py_function (read_tfrecord_nf, [пример], .float32)
/home/vagrant/anaconda3/envs/projf/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:539 iter
self._disallow_iteration () /home/vagrant/anaconda3/envs/projf/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:532 _disallow_iteration
self._disallow_when_autograph_ratedable (overable) tf.Tensor
")
/home/vagrant/anaconda3/envs/projf/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:510 _disallow_when_autograph_enabled
" непосредственно его украшая with @ tf.function. ". format (task)) OperatorNotAllowedInGraphError: iteratin g над tf.Tensor
не допускается: AutoGraph не преобразовывал эту функцию. Попробуйте украсить его напрямую с помощью @ tf.function.
Там написано: «Попробуйте украсить его напрямую с помощью @ tf.function», но я делаю это. Что я здесь не так делаю? Я использую tensflow 2.1.0