如何在Keras/Tensorflow中计算神经网络中d/dx[du/dt]相对于输入(x,t)的导数?

假设我有一个具有两个输入的神经网络:

(x, t) —> [神经网络] —> u(x,t)

我需要计算du(x,t)/dx, du(x,t)/dt,并且最重要的是部分导数d/dx[du(x,t)/dt]

我设法创建了这个代码,它可以无错误运行,但导数结果为None。请问有人可以帮助我吗?

更新 – 我已经解决了这个问题

for epoch in range(epochs):    print("\nStart of epoch %d" % (epoch, ))    for step, (x, t) in enumerate(self.get_data()):        x = tf.constant(x)        t = tf.constant(t)        with tf.GradientTape(persistent=True) as tape_ord_2:            tape_ord_2.watch((x, t))            with tf.GradientTape(persistent=True) as tape_ord_1:                tape_ord_1.watch((x, t))                tensor_data = tf.cast([[x, t]], tf.float32)                u = self.model(tensor_data, training=True)            u_x = tape_ord_1.gradient(u, x)            u_t = tape_ord_1.gradient(u, t)        u_xx = tape_ord_2.gradient(u_x, x)        u_tt = tape_ord_2.gradient(u_t, t)        u_xt = tape_ord_2.gradient(u_x, t)        u_tx = tape_ord_2.gradient(u_t, x)        # 这些应该是相同的,而且它们确实相同        print('u_xt: {},  u_tx: {}'.format(u_xt, u_tx))

回答:

感谢@EdvBeq的更新。为了社区的利益,在此提供解决方案。

输出:

TensorFlow version: 2.4.1Eager execution: TrueStart of epoch 0u_xt: 0.004451256711035967,  u_tx: 0.0044512562453746796Start of epoch 1u_xt: 0.004451256711035967,  u_tx: 0.0044512562453746796

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注