minΣ(||xi-Xci||^2+ λ||ci||),
с.т кии = 0,
где X представляет собой матрицу формы d * n, а C имеет форму n * n, xi и ci означает столбец X и C по отдельности.
X здесь известен, и на основе X мы хотим найти C.
minΣ(||xi-Xci||^2+ λ||ci||),
с.т кии = 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