Вывод симметричной c матрицы из MLP с помощью Keras - PullRequest
0 голосов
/ 23 апреля 2020

Я работаю с MLP, написанным очень просто с Keras. Эта сеть предсказывает условия ковариационной матрицы, которая затем используется в пользовательских потерях. Когда матрица просто диагональ, я могу использовать простые приемы, чтобы заставить вещи работать. Однако, когда матрица заполнена (это ковариационная матрица, поэтому она полна и симметрия c), у меня возникают следующие проблемы:

  • Как вывести полная, симметричная c матрица из моего MLP? Я хочу вывести только верхнюю три angular часть матрицы, а не полную. Я пытался использовать трюки, используя reshape, но безрезультатно;
  • Как я могу выполнять операции линейной алгебры в моей произвольной потере? Трюки, используемые для диагональной матрицы, больше не работают.

На данный момент моя потеря выглядит так:

def cma_sig_loss(self, adv, mu):
  def loss(y_true, y_pred):
      var      = y_pred
      log_var  = tk.backend.log(var)
      loss_sig = 0.5*tk.backend.square(y_true-mu)/var + 0.5*log_var
      loss_cma = tk.backend.mean(adv*loss_sig)

      return loss_cma
  return loss

Я знаю, что это не правильное выражение многомерное нормальное распределение, но это реальная цель моего вопроса.

Заранее спасибо,

...