跑通项目《GAT-BiLSTM-CRF》
记录一下自己跑通一个GitHub项目《GAT-BiLSTM-CRF》的过程
自己电脑环境如下:
- 显卡:3060TI
- CUDA : 11.0
- CUDAToolkit : 8.0.2
首先新建一个conda环境
conda create -n GBC python=3.7 |
然后用Pycharm打开其项目,并把Pycharm的环境也切换到GBC
下面就是安装环境了,根据作者的md文件,需要装一个Pytorch1.1版本
从官网找见下载链接,并把-c pytorch
去掉,以便使用清华源
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 |
看来这种方法不太行,换一种方法!
打开Pytorch官网的下载源,搜索cu100/torch-1.1.0
,下载如下的包
ちょっと待って,我好像已经发现了问题,我的CUDA11.0
肯定和这个不匹配,装了也没用,那就用CPU
版本的torch
跑一跑试试吧
CPU Only |
应该是numpy
版本不对?重装一下试试
pip install numpy -U |
那就卸载了重装一下吧
pip uninstall numpy |
咦?我不是卸载了吗?根据之前的经验,可以试试强制升级numpy
版本
pip install numpy --ignore-installed numpy |
再跑一次试试
刚刚那个错解决了!这个应该是没有装nltk
的包,装一下试试
pip install nltk |
再跑一次
能跑起来一点点了,这应该是我还没有改地址的问题,改一下去,先全局搜索一下这个地址哪用到了(第52行)
出现大问题了,作者并没有提供数据集,但是他提供了数据集的格式
Input is in CoNLL format (We use BIO tag scheme), where each character and its label are in one line. Sentences are split with a null line. |
翻译一下
输入是CoNLL格式(我们使用BIO标签方案),其中每个字符和它的标签都在一行。句子用空行分割。 |
那就先自己找一个数据集康康能不能跑吧,数据集就用我之前的找的试试
按照作者的地址和文件夹创建一下
先跑一下试试吧
可恶啊,可能就是数据集的格式不对了。但是感觉有戏
换一个有一个标注的数据集试试,经过一番搜索,找到了一个数据集
复制到项目中并修改一下路径试试
跑一下试试
可恶啊,还是数据集读的方式不对
找师兄borrow了一个数据集,这个配置后的样子
运行走起!
又报错了,搜了一下,试试在最前面导入一个包
from tqdm import tqdm_notebook as tqdm |
emmmm再换一个别的包试试?
from tqdm import tqdm |
又回到了格式问题,一直说是gdk编码不能识别,但我看了一下自己的数据集是utf-8
编码的
要不试试把打开文件的编码改一下?找到打开文件的编码,加上encoding
属性(19行)
in_lines = open(input_file, 'r', encoding='utf-8').readlines() |
啊?越界了!调试一下康康
我猜,这个label应该就是标注,可能他的数据集中,标签在pairs[-5]
的这个位置。但我的理论上貌似应该大概也许在pairs[1]
的位置吧。改一下试试
label = pairs[1] |
再跑一次!
emmmmmm为什么————
我肯定的一点是,我应该是改对了,难道是数据太大了吗
查了一下网上的方法,试试加入一个判断条件防止越界
if not idx in range(len(in_lines)): |
跑一下试试
纳尼?还可以越界的吗
最后一招!我试试把数据集弄小一点
其他的数据集也差不多这么大,就一句话!我不信这也可以越界了,把地址改完重跑一次
emm确实不越界了,这个错误可能是之前没注释干净,继续注释试试
再跑一次
我猜想,我是安装的是CPU
版本的torch
,而他程序里要求的是带GPU
的torch
。我康康能不能把程序改一下吧
网上搜索了一下,试试这么改
感觉这是一条不归路啊,要不先试试torch1.7
版本(电脑这个版本可以调用GPU)能不能跑,如果不行再用cpu吧。
从官网找的链接
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 |
安装完了
跑跑试试(希望兼容希望兼容!)
NO————————————!!!!!!!
看了一下好像是自己的torch安装乱了,果然还得是先卸载再安装啊,不会自动卸载的
先卸载
pip uninstall torch |
然后看一下有没有卸载干净
pip list |
像这样就可以了,再重装一下吧
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 |
安装完再检查一下
好的,现在就可以跑一下试试了!
啊嘞?!我用python
命令行试试能不能调用GPU
python |
emmm好吧,看来确实不能,再卸载了重装一下吧
pip uninstall torch |
pip install torch==1.7.0+cu110 torchvision==0.8.0+cu110 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html |
又是什么情况?!那还是用conda
装吧
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 |
为什么是CPU版本的啊,换torch1.7.1
试试?
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html |
这也太艰难了吧,网上查了一下
按照他说的找到文件夹并且删除
再重装一下
pip install numpy |
然后再装一下torch
试试
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html |
感天动地,终于装好了。跑一下试试!
是不是我数据量太少的原因,先改回原来的数据集
然后我发现了设定数据集大小的位置,修改成比自己数据集大的大小
走起试试!
突然又发现了一个参数,可能是不是没改全的原因,改完跑一下试试
走起
emmmm好神秘啊!换成只有800行左右试试
这又是什么诡异的错误…网上查了一下
好像比较好改,直接看报错信息,找到最后一个代码里的报错
点进去,会自动跳到报错那一行,然后用网上的方法修改一下
embeds_pack = pack_padded_sequence(embeds, batch_len.to('cpu'), batch_first=True) |
再跑试试!
跑了但没完全跑起来,是哪除0的情况没有考虑到应该,点进去代码里加一个判断条件试试
把原本这段代码
epoch_cost = epoch_finish - epoch_start |
修改为这段
epoch_cost = epoch_finish - epoch_start |
在试试吧
emmm这样吗,网上一查
那就把null
改成none
试试
emmm行吧,那就直接改一个数字算了(114514/doge
)
woc跑起来!?
所以这是成功了?!但是为什么好多0,总感觉不太对的样子