我正在尝试学习张量流优化,因为我主要在Matlab中进行编码。
我的matlab代码是:
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
x0 = [0.5,0];
A = [1,2];
b = 1;
Aeq = [2,1];
beq = 1;
x = fmincon(fun,x0,A,b,Aeq,beq)
我想使用tensorflow实现上述优化。有没有办法复制它?
我遇到了this solution,但它只考虑了平等约束而不是不平等。
答案 0 :(得分:0)
这是一个关于如何将Tensorflow优化器包装成更像您期望的优化器的教程:
https://pcess.github.io/tensorflow/
需要注意的关键是Tensorflow没有一个与Matlab优化器的工作方式类似的优化器。这是因为Tensorflow优化器基本上都是为解决随机梯度下降问题而设计的......也就是说,在评估整个函数时如何优化函数的计算成本太高。因此,您不仅需要为Tensorflow设置自己的停止条件,还需要告诉它如何处理相等约束。
您当然可以通过引入拉格朗日乘数来合并等式约束,但您必须手动执行此操作。
如果您只是想在Matlab之外执行优化,那么您应该尝试使用scipy.optimize.minimize中的一种方法。如果你绝对必须在Tensorflow中拥有它,那么你有很多工作要做。