0

我想使用 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。

4

0 回答 0