Invalid argument: Matrix size-incompatible: In[....] [[{{node loss/crf_1_loss/MatMul_1}}]] [[metr...

记一个找了一整天的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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容