Вы не можете использовать функции SciPy (или функции, основанные на NumPy, в общем) непосредственно на тензоре TensorFlow.Вы можете сделать это с tf.py_func
, но в общем случае лучшим вариантом является использование только операций TensorFlow.В этом случае ни абстракция бэкэнда Keras, ни TensorFlow не имеют гамма-функции, но TensorFlow имеет tf.lgamma
, что является его логарифмом (точнее, логарифмом его абсолютного значения).Затем вы можете получить то, что хотите:
gamma_t = K.map_fn(lambda x: K.exp(tf.lgamma(1.0 + 1.0 / x)), b)
PS: обратите внимание, что обычно рекомендуется использовать только бэкэнд-функции при манипулировании тензорами Keras, но так как это довольно специфическая особенностьи он там не раскрывается (хотя, несмотря на то, что в Theano есть реализация гамма-функции, в настоящее время нет CNTK, поэтому реализовать ее для всех бэкэндов было бы невозможно).