【recursive autoencoder】运行str2vec

来源:互联网 发布:大数据建设开展情况 编辑:程序博客网 时间:2024/06/05 14:44

最近需要用到recursive autoencoder,一番搜寻之后从github下载了源码,这里对作者pengli09表示感谢^_^

str2vec的功用

str2vec是将一个句子压缩成一个向量,压缩方法为recursive autoencoder。美中不足是,没有提供句子节点的向量。
训练:需要提供两个文件置于input文件夹下:一个是词向量文件,另一个是训练语料文件(每行一个句子或者短语,格式为:单条语料 ||| 出现次数。“||| 出现次数”这一部分是可选的,有的话节省训练时间)。运行mpi-train.sh进行训练。
测试:测试语料置于input文件夹下。每行为单条测试语料。运行compute-vector.sh得到结果。每条语料对应一个向量,且向量维度与提供的词向量相同。

安装依赖项

按照readme.md里说的安装了需要用到第三方库。我在安装openMPI时遇到了些问题。因为源码是在linux下开发的,而实验室的电脑是windows系统,1.8.1 or later版本的openMPI没有windows版,1.6版本的openMPI倒是有,当时隐隐感觉不妙。。。后来证明用Microsoft MPI替代openMPI也是可以work的。MPI和Mpi4py的安装是紧密相关的,具体过程参见博文,在此不做赘述。

修改mpi-train.sh

安装好所有依赖项之后,尝试运行str2vec里提供的demo。这里需要对mpi-train.sh做修改。将mpirun -n $1 python $PYTHONPATH/nn/lbfgstrainer.py\ 修改为mpiexec -n $1 python $PYTHONPATH/nn/lbfgstrainer.py\

在windows下运行.sh

作者提供的sh是linux下的脚本文件,在windows下运行sh需要借助git。在demo-data\str2vec-demo路径下打开git bash。然后按照readme.md里所说的运行 ./mpi-train.sh 2 然而出错了。

TypeError: bcast() takes at least 1 positional argument (0 given)

报错:TypeError: bcast() takes at least 1 positional argument (0 given)。看readme.md说原因是依赖项不同版本函数更迭,心里一紧。。

难道Microsoft MPI终究是不能替代openMPI么?我找到Microsoft MPI官网,发现之前按照下的MPI是v6版本的,现在出了最新的版本v8,莫非是v6版本太老,不能cover住openMPI1.8.1?于是下载了v8版本,重新安装了Microsoft MPI。再次运行 ./mpi-train.sh 2,然并卵。

除了MPI,最有可能出问题的是mpi4py了。看了下readme.md提到mpi4py需要1.3.1 or later版本,记得之前按notice的方法安装的mpi4py是2.0.0版本的。按理说应该是属于1.3.1 or later范围呀。。于是把1.3.1版本的mpi4py源码down了下来,运行python setup.py install,依然是和之前 一样报错,这可咋整。。

不死心,发现之前的安装命令是
conda install --channel https://conda.anaconda.org/dhirschfeld mpi4py
这个https://conda.anaconda.org/dhirschfeld 应该就是mpi4py安装包或者源码的提供网址了。访问之,发现了
这里写图片描述
点击第三栏的网址,发现这是mpi4py的开源项目主页,之前下的mpi4py-1.3.1应该和这里的1.3.1是一样的,估计没帮助。

不知为何我点了第一栏(就是标题mpi4py嗯),居然有链接,然后看到了这个
这里写图片描述 ,这么巧,居然是1.3.1版的mpi4py诶。。于是卸载了先前装好的mpi4py,使用界面提示命令conda install -c dhirschfeld mpi4py=1.3.1.post152.g2b55fb2安装。安装顺利。

运行demo

再次运行./mpi-train.sh 2,运行成功。开心^_^


最后,总结一下整个流程吧

1,安装Microsoft MPI的v8版本(v8版本至少证明是能work的)。
2,使用conda install -c dhirschfeld mpi4py=1.3.1.post152.g2b55fb2安装 1.3.1版本的mpi4py。
3,修改mpi-train.sh。将mpirun -n $1 python $PYTHONPATH/nn/lbfgstrainer.py\ 修改为mpiexec -n $1 python $PYTHONPATH/nn/lbfgstrainer.py\
4,在demo-data\str2vec-demo路径下打开git bash,运行 ./mpi-train.sh 2,当然也可以不是2,看你想用多少个核了。

0 0
原创粉丝点击