Не удалось преобразовать объект типаТензор - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь рандомизировать флип-аугментацию с помощью функций тензорного потока left_right и up_down. Я получаю сообщение об ошибке отображения функции на основе логического условия с помощью tf.cond ()

random_number=tf.random_uniform([],seed=seed)
print_random_number=tf.print(random_number)
flip_strategy=tf.less(random_number,0.5)

версия 0.1

image=tf.cond
        (
            flip_strategy,
            tf.image.flip_left_right(image),
            tf.image.flip_up_down(image),
        )

версия 0.2

image=tf.cond
            (
                flip_strategy,
                lambda: tf.image.flip_left_right(image),
                lambda: tf.image.flip_up_down(image),
            )

ERROR

TypeError: Не удалось преобразовать объект типа в Tensor. Содержание: Рассмотрим приведение элементов к поддерживаемому типу. ROR:

Дайте мне знать, что мне не хватает или нужна дополнительная информация.

1 Ответ

0 голосов
/ 29 апреля 2019

Из документации :

tf.math.less ( Икс, у, не имя = None )

Args:

x: A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.

y: A Tensor. Must have the same type as x.

name: A name for the operation (optional).

Так что tf.less ожидает два тензора, но один из передаваемых вами аргументов - это пустой массив. Вы можете просто преобразовать массив NumPy в тензор, как


random_number=tf.random_uniform([],seed=seed)
print_random_number=tf.print(random_number)
random_numer=tf.convert_to_tensor(random_number,dtype=tf.float32)
flip_strategy=tf.less(random_number,0.5)

image=tf.cond`
  (
  flip_strategy,
  tf.image.flip_left_right(image),
  tf.image.flip_up_down(image),
  )

...