首页 > 解决方案 > 在具有重建概率的 keras 中实现变分自动编码器

问题描述

我正在尝试在 keras 中实现变分自动编码器,并使用重建概率而不是重建错误来进行异常检测。在深度学习 4j 中有一个例子,有人已经在这里问过同样的问题:Variational autoencoder and rebuild Log Probability vs Reconstruction error

谢谢你的帮助

标签: kerasautoencoder

解决方案


取决于您的用例。在下面的示例中,您可以获取重建矩阵和输入矩阵的内积的迹(假设将重建矩阵作为概率是有意义的)。然后编辑您的自定义损失函数以返回该值,而不是(或除了)标准 VAE 损失。Adam 并不关心正在优化什么,但是,如果您不使用它的损失,使用 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)

在蛋白质输入的情况下,对每列进行标准化是有意义的,因为每一列实际上只能有一个值。在其他情况下,您可能想要


推荐阅读