Вызывать специальные функции для тензоров Tensorflow? - PullRequest
0 голосов
/ 06 января 2020

Стоит ли снизить производительность при вызове специальных функций scipy / numpy с тензорами Tensorflow в качестве аргументов? В отличие от использования функций, предоставляемых tensorflow.math?

Я спрашиваю, потому что некоторые специальные функции доступны в Scipy, но не в Tensorflow (например, scipy.special.erfcx). Я предполагаю, что Tensorflow предоставляет функции в tensorflow.math вместо того, чтобы рекомендовать использовать numpy или scipy напрямую, потому что это обеспечивает некоторое ускорение?

Редактировать: Обратите внимание, что я пытался использовать @tf.function:

import scipy.special
import tensorflow as tf

@tf.function
def erfcx(x):
    return tf.convert_to_tensor(scipy.special.erfcx(x))

но я получаю сообщение об ошибке при вызове tf.Tensor.

A = tf.random.uniform((5,6))
erfcx(A)
# NotImplementedError: Cannot convert a symbolic Tensor (x:0) to a numpy array.

Есть предложения?

1 Ответ

1 голос
/ 06 января 2020

Так что вы можете сделать следующее. Однако я не думаю, что вы можете использовать эту функцию вместе с @tf.function, что, вероятно, слишком сложно для TF построить граф. Это будет работать в режиме исполнения Eager.

import tensorflow as tf

x = tf.ones(shape=[10,2], dtype=np.float32)
erfcx = tf.numpy_function(scipy.special.erfcx,[x], tf.float32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...