使用 Tensorflow Addons 将 CRF 损失函数添加到 DNN 模型

问题描述 投票:0回答:0

我正在使用 keras 在 python 中开发一个 DNN 模型,它有一个 CRF 层作为输出。由于不推荐使用 Keras-contrib,我正在尝试以这种方式使用 Tensorflow Addons CRF 层(doc):

def get_model(n):
    input = Input(shape=(None, 3000, n))

    # CNN encoder
    encoder = ...
    classifier = TimeDistributed(encoder)(input)

    # Add some CNN layers
    classifier = ...

    crf = CRF(5)
    decoded_sequence, potentials, sequence_length, chain_kernel = crf(classifier)

    model = Model(name='crf_model', inputs=input, outputs=potentials)
    model.compile(optimizers.Adam(0.001), loss=crf_loss)
    model.summary()

    return model

因此,想法是在编译模型时添加一个CRF损失函数(

loss=crf_loss
)。

我尝试使用 Tensorflow Addons (doc) 中的 crf_log_likelihood,这看起来是个不错的选择,但它在我的代码中不起作用。我需要计算这种损失,以便通过使用适当的损失函数获得更好的准确性。

此外,我也尝试过使用 CRFModelWrapper (doc),它已经包含了损失函数,但它会导致输出形状出现一些问题,所以我只想在上面的代码中包含一个损失函数。

python tensorflow keras deep-learning crf
© www.soinside.com 2019 - 2024. All rights reserved.