Я использую BiLSTM + CRF, чтобы сделать модель маркировки последовательности для пост-тегов.Но я считаю, что моя crf.acraracy увеличивается так быстро и достигает 1,0 только в первую эпоху.Я использую слой CRF из библиотеки keras_contrib и пишу код, ссылаясь на пример 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: 4s - потеря: 17.2046 - в соответствии с 0.9666 1920/2000 [==========================> ..] - ETA: 3s- потеря: 17.1906 - согласно: 0.9671 1952/2000 [==================================>.] - ETA: 2s - потеря:17.2806 - согласно: 0.9677 1984/2000 [==================================>.] - ETA: 0s - потеря: 17.2222 - согласно: 0.9682
Но точность равна 0,4, если я не использую CRF, как и код в другой части, и обучение выглядит более нормально.
Итак, игнорирую ли я некоторые детали в CRF keras_contrib