Объект Tensor не имеет атрибута numpy в функции tf.function в TF 2.0 - PullRequest
1 голос
/ 09 апреля 2019

Есть ли альтернатива tensor.numpy() внутри tf.function в TensorFlow 2.0?Проблема заключается в том, что, когда я пытаюсь использовать его в декорированной функции, я получаю сообщение об ошибке 'Tensor' object has no attribute 'numpy', в то время как снаружи он работает без каких-либо проблем.

Обычно я бы выбрал что-то вроде tensor.eval(), но это можно использовать только в сеансе TF, и в TF 2.0 больше нет сеансов.

1 Ответ

2 голосов
/ 09 апреля 2019

Если у вас есть функция без декорации, вы можете правильно использовать numpy() для извлечения значения tf.Tensor

def f():
    a = tf.constant(10)
    tf.print("a:", a.numpy())

Когда вы декорируете функцию, объект tf.Tensor меняет семантику,становясь тензором вычислительного графа (простой старый объект tf.Graph), метод .numpy() исчезает, и если вы хотите получить значение тензора, вам просто нужно его использовать:

@tf.function
def f():
    a = tf.constant(10)
    tf.print("a:", a)

Следовательно, вы не можете просто украсить нетерпеливую функцию, но вы должны переписать ее, думая, как в Tensorflow 1.x.

Я предлагаю вам прочитать эту статью (и часть 1) для лучшего пониманиякак работает tf.function: https://pgaleone.eu/tensorflow/tf.function/2019/04/03/dissecting-tf-function-part-2/

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