OperatorNotAllowedInGraphError: итерации по `tf.Tensor` не допускаются при попытке использования numpy () - PullRequest
0 голосов
/ 30 марта 2020

У меня есть несколько 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...