利用重构概率在喀拉拉邦实现变分自动编码器

时间:2018-10-30 21:06:40

标签: keras autoencoder

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

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

取决于您的用例。在下面的示例中,您可以跟踪重构矩阵和输入矩阵的内积(前提是将重构矩阵作为概率设置为有意义)。然后,编辑您的自定义损失函数以返回该值,以代替标准VAE损失(或除此以外)。 Adam不在乎要优化的内容,但是,如果不使用VAE,损失使用VAE的好处。 来自here

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)

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