CTC+pytorch编译配置warp-CTC,以及问题解决

warp-CTC安装

warp-CTC是百度开源的一个可以应用在CPU和GPU上高效并行的CTC代码库,对CTC算法进行了并行处理。

warp-CTC安装:

git clone https://github.com/SeanNaren/warp-ctc.git
cd warp-ctc
mkdir build; cd build
cmake ..
make
cd ../pytorch_binding
python setup.py install

添加环境变量:

gedit ./.bashrc
export WARP_CTC_PATH=/home/xxx/warp-ctc/build

我做的过程中,遇到了两个问题:

1.ImportError: No module named ‘warpctc_pytorch._warp_ctc’

>>> from warpctc_pytorch import CTCLoss
Traceback (most recent call last):
  File "", line 1, in 
  File "/home/work_nfs3/fyu/tools/warp-ctc/pytorch_binding/warpctc_pytorch/__init__.py", line 6, in 
    from ._warp_ctc import *
ImportError: No module named 'warpctc_pytorch._warp_ctc'

解决方法:

将warp-ctc/build路径下面的libwarpctc.so复制到你的anaconda3/lib路径下面。

2.ImportError: anaconda3/lib/python3.5/site-packages/warpctc_pytorch-0.1-py3.5-linux-x86_64.egg/warpctc_pytorch/_warp_ctc.cpython-35m-x86_64-linux-gnu.so: undefined symbol: _ZNSt13runtime_errorC2EPKc

原因:修改了清华源https://pypi.tuna.tsinghua.edu.cn/simple之后,conda下载的pytorch1.0编译时候,gcc配置存在问题。
解决方法:
如何确定是gcc配置问题导致的?torch._C._GLIBCXX_USE_CXX11_ABI,如果是true的话就说明是这个问题。
解决办法的话,可以修改conda的源为- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/。用这个源重新安装pytorch,此时的gcc配置将没有问题。

或者更新当前的gcc编译器。conda install libgcc(这个方法有些环境可以,上面的方法是万能)

测试

warp-ctc/pytorch_binding/tests路径下运行:

python test_cpu.py 
python test_gpu.py 

CTC+pytorch编译配置warp-CTC,以及问题解决_第1张图片
CTC+pytorch编译配置warp-CTC,以及问题解决_第2张图片

或:

import torch
from torch.autograd import Variable
from warpctc_pytorch import CTCLoss
ctc_loss = CTCLoss()
# expected shape of seqLength x batchSize x alphabet_size
probs = torch.FloatTensor([[[0.1, 0.6, 0.1, 0.1, 0.1], [0.1, 0.1, 0.6, 0.1, 0.1]]]).transpose(0, 1).contiguous()
labels = Variable(torch.IntTensor([1, 2]))
label_sizes = Variable(torch.IntTensor([2]))
probs_sizes = Variable(torch.IntTensor([2]))
probs = Variable(probs, requires_grad=True) # tells autograd to compute gradients for probs
cost = ctc_loss(probs, labels, probs_sizes, label_sizes)
cost.backward()
print('PyTorch bindings for Warp-ctc')

你可能感兴趣的:(语音,ctc)