为什么我的keras-contrib的crf.accuracy增长如此之快?

时间:2018-10-24 06:51:51

标签: keras crf

我使用BiLSTM + CRF进行后标记的序列标记模型。但是我发现我的crf.accuracy增长如此之快,仅在第一个时期就达到了1.0。 我使用来自keras_contrib lib的CRF层,并编写引用CRF示例的代码。我的后端是Tensorflow。 output = TimeDistributed(Dense(100,activation='relu'),name='Dense_1')(lstm_output) output = Dropout(rate=0.3)(output) if self.use_crf: crf_layer = CRF(self.label_num,sparse_target=True) output = crf_layer(output) model = Model(inputs, output) model.compile('adam', loss=crf_layer.loss_function, metrics=[crf_layer.accuracy]) else: output = TimeDistributed(Dense(self.label_num,activation='softmax'), name='Dense_2')(output) model = Model(inputs, output) model.compile('adam', loss='categorical_crossentropy', metrics=['accuracy'])

但是crf_layer.accuracy似乎增长得如此之快。在第一个时期,它显示为

1888/2000 [========================== ..]-ETA:4秒-亏损:17.2046-acc:0.9666  1920/2000 [========================== ..]-ETA:3秒-损失:17.1906-acc:0.9671  1952/2000 [===========================>。]-ETA:2秒-损失:17.2806-acc:0.9677  1984/2000 [===========================>。]-ETA:0s-损失:17.2222-acc:0.9682

但是,如果我不使用CRF,则准确性仅为0.4,就像其他部分的代码一样,并且训练看起来更加正常。

所以我是否忽略keras_contrib的CRF中的一些细节

1 个答案:

答案 0 :(得分:1)

我发现了错误。因为我的目标是一个热点向量,所以无法设置sparse_target = True。解决此问题后,现在看起来很正常。

相关问题