问题描述
我正在做一个项目,在该项目中我使用了第一类 Jn(x) 的贝塞尔函数。 变量 x 必须是在我的自定义层中声明的可训练 tensorflow 变量,如下所示:
self.x = self.add_weight(name="x",shape=(1,),initializer="random_normal",trainable=True)
由于 scipy.special.jn(n = 0,self.x)
抛出“NotImplementedError: numpy() 仅在启用急切执行时可用。”我只是自己创建了贝塞尔函数的近似值(参见 Wikipedia):
def tf_bessel(n: int,x: tf.float64):
sol = 0.0
for r in range(0,100):
sol += 1.0 * ((-1) ** r) * ((x/2) ** (2 * r + n)) * (1/(tf_factorial(float(n + r)) * tf_factorial(float(r))))
return 0.0 if (tf.math.is_nan(sol)) else sol
def tf_factorial(x: float):
n = tf.constant(x)
return tf.math.exp(tf.math.lgamma(n+1))
由于这不会很快起作用,我正在寻找有关如何改进此代码的任何建议。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)