记录第一次跑Multi-Grained-NER-master代码的成长历程
距离拿到这个代码到写下这篇博客已经过去三周有余了。我因为一样Allennlp版本刚好更新,然后装的最新版的。这个文章的代码总是跑不起来,现在各种搜索,终于跨出了一步。
第一次听到博士师兄说Allennlp文档更新了,我就没想太多,而且之前喜欢什么都安装最新的,所以就在python==3.8,tensorflow==2.3.1,torch==1.7。0,allennlp==1.2.0这几个最新的版本上一直钻研琢磨。
我找了很多查找方式,比如搜索allennlp的用法,elmo embedding,等等,去官网上钻研,查看命令的用法等等都是只看看,没有动手实践,然后并没有得出什么结果。
最后还是边学边写,动手实操真的是学习的最快的方法,在实操的过程中,我找的了一篇教程,关于elmo的用法,生成对应的词向量:https://blog.****.net/horizonheart/article/details/91043033。在这篇文章的最后下载了github代码,然后查看应该修改的部分。最后使用的usage_cached.py这个文件的方法来生成对应的向量。还是要动手啊,原来官网上已经给出了他的用法,我一直不愿意去写,去看。根据代码名称及细节,知道了应该替换的部分,然后生成了相应的文件。终于终于走完了0.0步骤。
这两篇博客也是我参考的重要部分:https://www.cnblogs.com/jiangxinyang/archive/2004/01/13/10235054.html、https://zoyi14.smartapps.cn/pages/note/index?slug=17abfefc1b5b&origin=share&_swebfr=1
接着跑detector的时候出现各种版本问题(主要是tensorflow1.0版本和2.0版本的不兼容问题)有大佬贡献教程是这么改的。
解决办法是将tf.contrib.rnn.LSTMCell()换成tf.nn.rnn_cell.LSTMCell()。其实之前还遇到一个问题:好像是弄model tf.placeholder()。然后参考网上的方法这么改了一下:
换成了1.0的用法。
之后还有版本问题
初始化的问题。参考了一篇文章的看法(完蛋链接被我弄丢,其实大致意思就是从官方文档上看相同实现功能的替代,说好像是集成到tf.keras.里面了啥的。反正我也不知道怎么找。这篇也可以看看,还有这篇。大佬们好多啊,都是好资源,我要存下来)
一怒下全部卸卸卸,降版本。把python换成了3.7。其他的就装和文章版本差不多的。torch的安装方法参考官方文档。allennlp选择对应的torch版本参考。然后就顺利跑起来了代码。还是和作者装一样的环境好啊,版本问题搞死人。(虽然我已经在新环境下跑出来了elmo embedding,但不知道对不对,怕以后改起来还是很麻烦,还是等待老版本的结果跑出来吧)
在换python版本的时候还遇到过没有pip的问题,参考的大佬做法:
在用新版本allennlp瞎搞出来的一个elmo_embedding_weight.hdf5文件还有各种下问题。但总的解决方法就是用命令查看文件内容,还是抱着试试的心态一定要动手动手动手尝试,反正就瞎搞,动手出效果最快。好了吐槽大概到这里,我等等看结果是不是对的。期待有个好消息。