【问题标题】:How to use a CRF layer in Tensorflow 2 (using tfa.text)?如何在 Tensorflow 2 中使用 CRF 层(使用 tfa.text)?
【发布时间】:2020-04-03 00:31:54
【问题描述】:
model= Sequential()
model.add(keras.layers.Embedding(vocab_size,output_dim=100,input_length=input_len,weights=[embedding_matrix],trainable=False))
model.add(keras.layers.Bidirectional(keras.layers.LSTM(512, return_sequences=True,recurrent_dropout=0.2, dropout=0.2)))
model.add(keras.layers.Bidirectional(keras.layers.LSTM(512, return_sequences=True,recurrent_dropout=0.2, dropout=0.2)))

model.add(keras.layers.Dense(128, activation="relu"))

model.add(keras.layers.TimeDistributed(keras.layers.Dense(vocab_size_label, activation="softmax")))
model.compile(optimizer=optim,loss='sparse_categorical_crossentropy',metrics=["accuracy"])
model.summary()

我已经为 NER 标记构建了一个 Bi-lstm 模型,现在我想在其中引入 CRF 层。我很困惑如何使用 Tensorflow 插入 CRF 层

tfa.text.crf_log_likelihood(
    inputs,
    tag_indices,
    sequence_lengths,
    transition_params=None
)

我在 tfa.txt 中找到了这个,并且有 3 个关于这个函数的查询: 1. 我如何传递这些论点? 2. 我是否必须在编译器中使用此输出作为损失(log_likelihood 的负数)。 有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python tensorflow deep-learning named-entity-recognition crf


    【解决方案1】:

    我也在找这个解决方案,我猜你应该创建一个自定义类来包装tfa.text.crf_log_likelihood方法,然后将它集成到keras.Sequence中。

    也许像https://github.com/tensorflow/addons/issues/723#issuecomment-559636561

    或者更多pytorch风格,比如https://github.com/saiwaiyanyu/bi-lstm-crf-ner-tf2.0/blob/master/model.py

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2017-08-11
      • 1970-01-01
      • 2020-09-05
      • 2020-02-18
      相关资源
      最近更新 更多