在计算梯度磁带中的雅可比时,得到“ValueError:磁带仍在录制,如果您尝试重新输入已经处于活动状态的磁带,就会发生这种情况”

问题描述

需要我的损失函数来计算雅可比矩阵行列式的对数。所以,我写了下面的代码

def gradient_update(self,X,optimizer):
        with tf.GradientTape() as t,tf.GradientTape() as j:
            Y = self(X)
            out = -self.distribution(Y) - tf.math.log(tf.linalg.det(j.jacobian(Y,X)))
            Loss =  tf.math.reduce_sum(out)

        grads = t.gradient(Loss,self.trainable_weights)
        optimizer.apply_gradients(zip(grads,self.trainable_weights))
        return Loss

这给了我以下错误

ValueError: Tape is still recording,This can happen if you try to re-enter an already-active tape.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...