DeepTyper复现记录--Linux系统
虚拟机中应该是无法安装cntk所需要的cuda和cudnn驱动(搜到的是可以在双系统中安装驱动,这部分不是很了解),做到最后几步才发现,又换到windows下进行了配置:Win10, cntk=2.0, python=3.6.5(必须在3.7以下,否则cntk不支持)1. 安装依赖项目导入后,安装依赖typescript(前提安装了nodejs), ---npm install -g typesc
深度学习方面是个新手,对于模型训练及服务器等不是很了解
虚拟机中应该是无法安装cntk所需要的cuda和cudnn驱动(搜到的是可以在双系统中安装驱动,这部分不是很了解),做到最后几步才发现,又换到windows下进行了, Windows下训练显存不够,又部署到服务器上了
知识匮乏就会走好多弯路,哭了
最终配置:
部署在服务器上, cntk=2.0, python=3.6.5(必须在3.7以下,否则cntk不支持)
1. 安装依赖
项目导入后,安装依赖typescript(前提安装了nodejs), ---npm install -g typescript, tsc -v检查是否安装成功
安装numpy, pygments等依赖
2.依赖安装完成后,开始拉取工程
文件介绍:
“data/cloner.sh": 脚本文件,拉取项目
”data/repo-SHAs.txt“: 记录github上托管的一些工程,和当时作者们所用的分支的SHA值。
“data/cloner.sh": 脚本文件,拉取项目
1)切换到data目录下,执行bash ./cloner.sh(先安装git, sudo npm install git), 成功后在data目录下生成Repos目录(一些库已经删除或私有了,不能clone了)
2) 切换到data目录下,执行sudo cp -r ./Repos ./Repos-cleaned,复制data/Repos中的库到data/Repos-cleaned中, 后续的数据处理都在Repos-cleaned中完成。
3.预处理类型信息,获取对应token和类型
1)切换到根目录下执行,sudo node CleanRepos.js, 读取工程的类型信息,执行完生成两类文件,保存在每个项目对应解析文件的目录下。
*.ttokens:序列化数据以及类型;
*.ttokens.pure:如果是用户用注释方式描述的类型信息,则写到*.ttokens.pure文件中
4.准备训练数据
执行sudo node GetTypes.js,
三个相关目录:
outputs-all:保存的数据用于训练(注释了推断类型的identifier)
outputs-gold:保存用户手动标注的类型信息
output-checkjs:用于和checkjs工具的结果做对比
训练数据格式:代码和token的对应
5.拆分训练集和测试集
切换到根目录,执行python lexer.py
,将数据分为
80%train、10%valid、10%test,最终生成6个文件,分别是train.txt,valid.txt,test.txt,source_wl,target_wl,test_projects.txt
在data目录下生成train.txt, valid.txt, test.txt
大概格式如下:
<s> import 's' ; import { configure } from 's' ; import * as _UNKNOWN_ from 's' ; configure ( { adapter : new _UNKNOWN_ ( ) } ) ; </s> O O O O O O $any$ O O O O O O O $any$ O O O $any$ O O $any$ O O $any$ O O O O O O
同时,还会生成source_wl和target_wl两个词表,source_wl是用到的符号表(最后一个是_UNKNOWN_,代表未知词),target_wl是类型的表(第一个0代表未知)
source_wl: target_wl:
同时,还会生成test_projects.txt(分析scripts,检索哪些projects被选中)
Tip:可能会
报错
报错原因应该是python版本不同,python2会报这个错
解决方法
:可以直接删除源码中的这句代码 encoding="utf-8"
解决问题后重新执行即可
执行结果如图
6.格式转换
在使用CNTK处理之前,需要将txt格式转换成CNTK需要的ctf格式。
工具:CNTK官网:https://github.com/microsoft/CNTK/blob/master/Scripts/txt2ctf.py
执行命令
python txt2ctf.py --map data/source_wl data/target_wl --input data/train.txt --output data/train.ctf
python txt2ctf.py --map data/source_wl data/target_wl --input data/valid.txt --output data/valid.ctf
python txt2ctf.py --map data/source_wl data/target_wl --input data/test.txt --output data/test.ctf
7.前期数据准备完毕,训练
cntk安装了2.0版本
可参考安装适用于Python的CNTK工具集 - 知乎 (zhihu.com)
需要修改源码中API
learning.parameter.schedule.per_sample替换为 learning_rate_schedule,并添加参数C.UnitType.minibatch
安装cntk框架,调用infer.py进行训练,执行python infer.py,
报错:
原因:显存不足
解决:
把上述所生成的所有文件及项目搬到服务器中训练,服务器中也需要3.6版本的python和cntk(我装的是2.0),运行python infer.py,可能会报错
第一个错
ImportError: libmpi_cxx.so.1: cannot open shared object file: No such file or directory
解决
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpi_cxx.so.20 /usr/lib/x86_64-linux-gnu/libmpi_cxx.so.1
第二个错
ImportError: libmpi.so.12: cannot open shared object file: No such file or directory
解决
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpi.so.20.10.1 /usr/lib/x86_64-linux-gnu/libmpi.so.12
训练结束生成cntk文件,即模型
使用模型进行测试
更多推荐
所有评论(0)