Реализация вариационного автоэнкодера в keras с вероятностью реконструкции

Я пытаюсь реализовать вариационный автоэнкодер в keras и использовать вероятность реконструкции вместо ошибки реконструкции для обнаружения аномалий. В глубоком обучении 4j есть пример, и кто-то уже задавал здесь тот же вопрос: Вариационный автоэнкодер и логарифм реконструкции Вероятность по сравнению с ошибкой реконструкции

Спасибо за вашу помощь


person Mohammad Riazi    schedule 30.10.2018    source источник


Ответы (1)


Зависит от вашего варианта использования. В приведенном ниже примере вы можете взять след внутреннего произведения матрицы реконструкции и входной матрицы (при условии, что имеет смысл рассматривать матрицу реконструкции как вероятность). Затем отредактируйте свою пользовательскую функцию потерь, чтобы она возвращала это значение вместо (или в дополнение) стандартных потерь VAE. Адаму все равно, что оптимизируется, однако приятные преимущества использования VAE, если вы не используете его потери, могут исчезнуть. Из здесь:

def compute_log_probability(one_hot_inp,pwm_output):
    prod_mat=np.matmul(one_hot_inp.T,pwm_output)
    log_prod_mat=np.log(prod_mat)
    sum_diag=np.trace(log_prod_mat)
    return sum_diag

output = x_decoded.reshape(dim1,dim2)
output = normalize(output,axis=0, norm='l1') #column-wise normalization in this case
prob=compute_log_probability(input,output)

В случае ввода белка имеет смысл нормализовать по столбцам, потому что каждый столбец действительно может иметь только одно значение. В других случаях вы можете захотеть

person carefullynamed    schedule 30.10.2018