记一个找了一整天的bug。
keras-contrib 里面的crf loss
image.png
因为CRF层定义的时候
self.crf = CRF(self.n_class, sparse_target=False)
sparse_target=False, 使用的label需要做one hot,如果没做就会报这个错。
改成sparse_target=True就使用数字label不需要one hot了。
顺便整理下:
categorical_crossentropy 和 sparse_categorical_crossentropy 的区别在哪?
如果你的 targets 是 one-hot 编码,用 categorical_crossentropy
one-hot 编码:[0, 0, 1], [1, 0, 0], [0, 1, 0]
如果你的 tagets 是 数字编码 ,用 sparse_categorical_crossentropy
数字编码:2, 0, 1