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 "<stdin>", line 1, in <module>
  File "/home/work_nfs3/fyu/tools/warp-ctc/pytorch_binding/warpctc_pytorch/__init__.py", line 6, in <module>
    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 

在這裏插入圖片描述
在這裏插入圖片描述

或:

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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章