【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,看你想用多少个核了。
- 【recursive autoencoder】运行str2vec
- Autoencoder
- autoencoder
- autoencoder
- Autoencoder
- Autoencoder
- AutoEncoder
- autoencoder
- Autoencoder
- autoEncoder
- recursive
- recursive
- recursive
- Training a deep autoencoder or a classifier on MNIST digits_之调试运行与理解
- Training a deep autoencoder or a classifier on MNIST digits_之调试运行与理解
- sparse-autoencoder
- Sparse Autoencoder
- Autoencoder review
- 数据结构(线性表):双循环链表
- yii中缓存(cache)详解
- Editext
- Once框架使用
- fileoutputstream 抛文件找不到异常
- 【recursive autoencoder】运行str2vec
- Linux TCP Socket四次握手
- woj~24. Divide by Six(dp)
- 一个nginx C++ hello_world http module
- HashSet的判断和删除依据
- 【ssm个人博客项目实战03】左侧导航菜单功能实现
- iOS利用iTunesLookup检查更新
- Java连接数据库入门案例
- 数据结构(线性表):线性表的静态链式表示