Optimization 使用TensorFlow模拟(Stiefel)流形优化

Optimization 使用TensorFlow模拟(Stiefel)流形优化,optimization,tensorflow,manifold,Optimization,Tensorflow,Manifold,我在TensorFlow中使用约束W'W=I努力最大化Tr(W'X'XW)。有问题的部分是约束,因为它要求权重保持在Stiefel流形上。有一种软方法将约束作为拉格朗日项添加到目标中。然而,这并不准确,而且实现可能会很混乱 我知道Pymanopt库使用autodiff进行流形优化。但是我仍然想知道,在Tensorflow中,是否有一种模拟(Stiefel)流形优化的基本方法?我对Tensorflow了解不多,但您试图解决的优化问题相当于找到矩阵Bingham分布的模式,这很容易计算。假设W是px

我在TensorFlow中使用约束W'W=I努力最大化Tr(W'X'XW)。有问题的部分是约束,因为它要求权重保持在Stiefel流形上。有一种软方法将约束作为拉格朗日项添加到目标中。然而,这并不准确,而且实现可能会很混乱


我知道Pymanopt库使用autodiff进行流形优化。但是我仍然想知道,在Tensorflow中,是否有一种模拟(Stiefel)流形优化的基本方法?

我对Tensorflow了解不多,但您试图解决的优化问题相当于找到矩阵Bingham分布的模式,这很容易计算。假设W是pxk维的,因此x'x是pxp维的。如果我没记错的话,最大化W_max是由X'X的前k个特征向量构造的,也就是说,如果X'X=UDU'是X'X的特征分解,那么W_max=U[:,1:k]。还有一个最大化矩阵:-W_max。