如何在tensorflow中实现优化功能?
How do I implement the optimization function in tensorflow?
minΣ(||xi-Xci||^2+ λ||ci||),
s.t cii = 0,
其中X是形状为d * n的矩阵,C是形状为n * n的矩阵,xi和ci分别表示X和C的列。
X 在这里已知,基于 X 我们想找到 C。
通常像这样的损失你需要对其进行矢量化,而不是使用列:
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
minΣ(||xi-Xci||^2+ λ||ci||),
s.t cii = 0,
其中X是形状为d * n的矩阵,C是形状为n * n的矩阵,xi和ci分别表示X和C的列。
X 在这里已知,基于 X 我们想找到 C。
通常像这样的损失你需要对其进行矢量化,而不是使用列:
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