如何在tensorflow中实现优化功能?

时间:2016-07-14 14:08:39

标签: machine-learning tensorflow theano deep-learning convex-optimization

minΣ(|| xi-X ci || ^ 2 +λ || ci ||),

s.t cii = 0,

其中X是形状d * n的矩阵,C的形状为n * n,xi和ci分别表示X和C的列。

X在这里是已知的并且基于X我们想要找到C.

1 个答案:

答案 0 :(得分:2)

通常会有丢失,你需要对其进行矢量化,而不是使用列:

loss = X - tf.matmul(X, C)
loss = tf.reduce_sum(tf.square(loss))

reg_loss = tf.reduce_sum(tf.square(C), 0)  # L2 loss for each column
reg_loss = tf.reduce_sum(tf.sqrt(reg_loss))

total_loss = loss + lambd * reg_loss

要在C的对角线上实现零约束,最好的方法是使用另一个常量lambd2将其添加到损失中:

reg_loss2 = tf.trace(tf.square(C))
total_loss = total_loss + lambd2 * reg_loss2