小编Flu*_*mer的帖子

siamese-net中的自定义组合铰链/ kb-发散损失功能无法生成有意义的扬声器嵌入

我目前正在尝试在Keras实现一个暹罗网,我必须实现以下丢失功能:

loss(p ? q) = Is · KL(p ? q) + Ids · HL(p ? q)
Run Code Online (Sandbox Code Playgroud)

纸张损失函数的详细描述

KL是Kullback-Leibler分歧,HL是铰链损失.

在训练期间,我将同一个扬声器对标记为1,将不同的扬声器标记为0.

目标是使用训练好的网络从频谱图中提取嵌入.频谱图是二维numpy阵列40x128(时间x频率)

问题是我从未达到0.5准确度,并且当聚类扬声器嵌入时结果显示嵌入和扬声器之间似乎没有相关性

我实施了kb-散度作为距离测量,并相应地调整了铰链损耗:

def kullback_leibler_divergence(vects):
    x, y = vects
    x = ks.backend.clip(x, ks.backend.epsilon(), 1)
    y = ks.backend.clip(y, ks.backend.epsilon(), 1)
    return ks.backend.sum(x * ks.backend.log(x / y), axis=-1)


def kullback_leibler_shape(shapes):
    shape1, shape2 = shapes
    return shape1[0], 1


def kb_hinge_loss(y_true, y_pred):
    """
    y_true: binary label, 1 = same speaker
    y_pred: output of siamese net i.e. kullback-leibler distribution
    """
    MARGIN = 1.
    hinge = ks.backend.mean(ks.backend.maximum(MARGIN …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

12
推荐指数
1
解决办法
334
查看次数