我想使用 sympy solve 为 Vo 求解 p,这是一种求解没有初始值的方程的算法。然后,我想使用 TensorFlow 的自动微分找到 p 对 Vo 的导数。我写了下面的代码,值计算得很好。但是,它最终无法转换为 tensorflow dtype。有没有办法使用与 sympy 兼容的 TensorFlow 张量?
from sympy import solve, Symbol, re
import tensorflow as tf`
class Concentrate_calculator:
def __init__(self, k, k1, m):
self.k=k
self.k1=k1
self.m=m
def calp(self, Vo):
p=Symbol('p')
equation = k1*m/(p+k1)+k/p-2*Vo-p
solution = solve(equation, p)
p=float(re(solution[2]))
return p
k=10.0**15
k1=10.0**9.5
m=10.0**19.2
cal = Concentrate_calculator(k,k1,m)
Vo = tf.Variable(1e18)
#Vo=1e18
with tf.GradientTape() as t:
t.watch(Vo)
p=cal.calp(Vo)
dpdVo = t.gradient(p,Vo)
print(dpdVo)
TypeError:无法将值 21897084140.095097 转换为 TensorFlow DType。