Почему crf.accuracy моего keras-contrib увеличивается так быстро? - PullRequest
0 голосов
/ 24 октября 2018

Я использую 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

1 Ответ

0 голосов
/ 24 октября 2018

Я нашел ошибку.Поскольку моя цель - горячий вектор, я не могу установить sparse_target = True.После того, как я это исправлю, теперь это выглядит нормально.

...