小编Rui*_*Shu的帖子

TensorFlow 中的 Cholesky 因子微分

我想获得tf.cholesky关于其输入的梯度。截至目前,tf.cholesky还没有注册渐变:

LookupError: No gradient defined for operation 'Cholesky' (op type: Cholesky)
Run Code Online (Sandbox Code Playgroud)

用于生成此错误的代码是:

import tensorflow as tf
A = tf.diag(tf.ones([3]))
chol = tf.cholesky(A)
cholgrad = tf.gradients(chol, A)
Run Code Online (Sandbox Code Playgroud)

虽然我可以自己计算梯度并注册它,但我见过计算 Cholesky 梯度的唯一现有方法涉及使用 for 循环并需要输入矩阵的形状。但是,据我所知,符号循环目前不适用于 TensorFlow。

获取输入矩阵形状的一种可能的解决方法A可能是使用:

[int(elem) for elem in list(A.get_shape())]
Run Code Online (Sandbox Code Playgroud)

但是,如果 的尺寸A依赖于具有 shape 的 TensorFlow 占位符对象,则此方法不起作用TensorShape([Dimension(None)])

如果有人对如何计算和注册 的梯度有任何想法tf.cholesky,我将非常感谢您了解它。

python linear-algebra tensorflow

5
推荐指数
1
解决办法
752
查看次数

标签 统计

linear-algebra ×1

python ×1

tensorflow ×1