一个例子如下:目标是优化一个f(x1,..,xN)
受约束x1 + .. + xN = 1
的函数0 < x_i <= 1
。一般来说,我如何使用 tensorflow(具有任意约束)来做到这一点?
我见过允许这样做的ScipyOptimizerInterface 。
在这种特殊情况下,另一种方法是使用nnsoftmax
转换来编写x_i = exp(y_i)/sum_i(exp(y_i))
, i=1,..,N
。y1,..,yN
现在不受约束,可以使用 SGD 进行优化,即使用 TensorFlow 没有任何约束。在 GPFlow 中,这相当于与变量关联的变换{y1,..,yN}
。
还有其他方法吗?