Как я могу реализовать VAE, которое изучает многовариантное нормальное распределение полной ковариации в кодированном пространстве? - PullRequest
0 голосов
/ 09 июля 2019

Я использую tfprobability в R для создания VAE.Хотя обычно выражение дивергенции KL соответствует скрытому пространству для N (0, I), нормального независимого распределения, я заинтересован в указании полной ковариационной матрицы.

Я могу повторить пример в https://www.tensorflow.org/probability/api_docs/python/tfp/layers/KLDivergenceAddLoss, но при этом используется tfd.MultivariateNormalDiag, требующий, чтобы ковариационная матрица была диагональной.Я пытался использовать как tfd.MultivariateNormalTriL, так и tfd.MultivariateNormalFullCovariance в качестве параметра distribution_b функции KLDivergenceAddLoss, но я получаю «NotImplementedError» в любом случае.

library(keras)
library(dplyr)
library(tensorflow)
library(tfprobability)

encoder_model <- keras_model_sequential() %>%
    layer_flatten(input_shape=28) %>%
    layer_dense(units=10, activation='relu') %>%
    layer_dense(units = params_size_multivariate_normal_tri_l(3), name='encoded') %>%
    layer_multivariate_normal_tri_l(event_size=3)  %>%
    layer_kl_divergence_add_loss(
        distribution_b = tfd_multivariate_normal_full_covariance(
            loc=c(0,0,0),
            covariance_matrix = diag(3)))
...