我想獲得有關其輸入的tf.cholesky
的梯度。作爲時刻,在tf.cholesky
沒有註冊的梯度: TensorFlow中的Cholesky因子分化
LookupError: No gradient defined for operation 'Cholesky' (op type: Cholesky)
用來生成該錯誤代碼是:
import tensorflow as tf
A = tf.diag(tf.ones([3]))
chol = tf.cholesky(A)
cholgrad = tf.gradients(chol, A)
雖然我能夠計算梯度自己並註冊它,我已經看到了Cholesky梯度計算涉及的唯一現有手段the use of for loops and needs the shape of the input matrix.但是,據我所知,symbolic loops aren't currently available to TensorFlow.
一po ssible解決方法,以獲取輸入矩陣A
的形狀很可能是使用:
[int(elem) for elem in list(A.get_shape())]
但如果A
尺寸取決於與形狀TensorShape([Dimension(None)])
一個TensorFlow佔位符對象這種方法是行不通的。
如果任何人有任何想法如何計算並註冊tf.cholesky
的梯度,我會非常感激知道它。
謝謝! Theano/Smith的方法就是我所追求的。我會給控制流操作一個鏡頭,並提交一個C++實現的github請求:) –