覚え書きブログ

読者です 読者をやめる 読者になる 読者になる

vimでPython

ツール&ソフト

下記のサイトを参考に、pythonのコーディングに便利なプラグインvimにインストールしてみた。
chrisstrelioff.ws

~/.vimにautoloadとbundleフォルダを作成し、autoloadにpathogen.vimをダウンロードする。

> mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

.vimrcに以下を記入する。

" contents of minimal .vimrc
execute pathogen#infect()
syntax on
filetype plugin indent on

~/.vim/bundleにnerdtree.vimをダウンロードする。
https://kamiya555.github.io/2015/10/14/nerdtree-command/

> cd ~/.vim/bundle
> git clone https://github.com/scrooloose/nerdtree.git

.vimrcに以下を記入して、F2キーでNERDTreeプラグインを起動できるようにする。

nmap <f2> :NERDTreeToggle<cr>

コード内のオブジェクト(関数、変数)のタグファイルを生成するctagsパッケージを、apt-getでインストールし、tagbar.vimプラグインを、bundleにダウンロードする。

> sudo apt-get install exuberant-ctags
> cd ~/.vim/bundle
> git clone git://github.com/majutsushi/tagbar

.vimrcに以下を記入して、F2キーでNERDTreeプラグインを起動できるようにする。

nmap <f3> :TagbarToggle<cr>

jedi-vimとjedプラグインを、bundleにダウンロードする。「--recursive」オプションを付けないと、jedプラグインがダウンロードされないので注意。
https://github.com/davidhalter/jedi-vim

> cd ~/.vim/bundle
> git clone --recursive https://github.com/davidhalter/jedi-vim.git

これで、F2キーで左のNERDTreeが表示され、F3キーで右のTagbarが表示される。
Tagbarとメインウィンドウ間は、「Ctr+w l」で移動できる。
f:id:hirotaka_hachiya:20170304123322p:plain

Tensorflow v1.0.0への移行

ディープラーニング

Tensorflow v1で、v0.12で書いたコードを実行すると下記のようなモジュールにpackが無いとか、Splitのsplit_dimの入力がおかしいなどのエラーがでる。

AttributeError: 'module' object has no attribute 'pack'
TypeError: Input 'split_dim' of 'Split' Op has type float32 that does not match expected type of int32.

これは、v1にて「pack」が「split」に関数名が変更されたり、splitの入力変数の順番が変更になったのが原因である。以下のサイトにて、自動的にv1にアップグレードしてくれるコードや、手動で関数名を変更する方法が紹介されている。
https://www.tensorflow.org/install/migration
Transitioning to TensorFlow 1.0  |  TensorFlow

Deep Learning覚え書き(Ubuntu14.04へのTensorflow v1.0.0のインストール)

windows版Tensorflowは、Python3の制約があり何かと使いにくいので、LinuxにPython2.7系のTensorflow v1.0.0をインストールすることにした。
https://www.tensorflow.org/install/install_linux

GPUサポートでTensorflowをインストールするためには、CUDA8.0とcuDNN5.1が必要なのでインストールする。

1)https://developer.nvidia.com/cuda-downloadsから、Ubuntu14.04のdeb(local)版「cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64.deb」をダウンロードし、次のコマンドを実行してインストールする。

> sudo dpkg -i cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64.deb
> sudo apt-get update
> sudo apt-get install cuda

2)https://developer.nvidia.com/rdp/cudnn-downloadから、cuDNN v5.1 Library for Linux版「cudnn-8.0-linux-x64-v5.1.tgz」をダウンロードし、次のコマンドを実行してインストールする。

> tar xzvf cudnn-8.0-linux-x64-v5.1.tgz 
> sudo cp -a cuda/lib64/* /usr/local/cuda-8.0/lib64/
> sudo cp -a cuda/include/* /usr/local/cuda-8.0/include/
> sudo ldconfig

3)libcupti-devをapt-getでインストールする

> sudo apt-get install libcupti-dev

4)native pythonのpipを用いて、tensorflowをインストールしてみる。
まず、pipをインストールする。

> sudo apt-get install python-pip python-dev

次にpipでtensorflowインストールしてみたが、下記のようなエラーがでた。

> pip install tensorflow-gpu
Downloading/unpacking tensorflow-gpu
  Could not find any downloads that satisfy the requirement tensorflow-gpu
Cleaning up...
No distributions at all found for tensorflow-gpu
Storing debug log for failure in /tmp/tmpHAlF_4

tensorflow-gpuが見つからないようだ。直接、tensorflowのパッケージのURLを指定してインストールしてみる。

> sudo pip  install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0-cp27-none-linux_x86_64.whl
...
Successfully installed tensorflow-gpu numpy wheel mock protobuf funcsigs pbr setuptools packaging appdirs pyparsing
Cleaning up...

無事インストールが出来た。

5)動作確認をする。
まず、最新版のtensorflowのソースを、git cloneする。

> git clone https://github.com/tensorflow/tensorflow.git

そして、MNISTのサンプルコードを実行する。

> cd tensorflow/tensorflow/examples/tutorials/mnist
> python mnist_with_summaries.py
Accuracy at step 0: 0.1231
Accuracy at step 10: 0.6979
...
Accuracy at step 80: 0.8862
Accuracy at step 90: 0.8999
Couldn't open CUDA library libcupti.so.8.0. ...

何とさっき3)でインストールしたはずのlibcuptiが見つからないというエラーが出てしまった。。。どうやら、Ubuntu14.04のlibcupti-devパッケージはcuda-7系にしか対応していないようで、3)ではcuda-8用のlibcuptiがインストールされていなかった。

そこで、少し調べて見たところ、cuda-8のインストールディレクトリの下/usr/local/cuda-8.0/extras/CUPTI/lib64にlibcuptiがあることが判明したので、LD_LIBRARY_PATHに追加し、再度MNISTのサンプルコードを実行したところ成功した。

> export LD_LIBRARY_PATH=/usr/lib:/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:/usr/local/lib:$LD_LIBRARY_PATH
> python mnist_with_summaries.py
Accuracy at step 0: 0.1231
Accuracy at step 10: 0.6979
...
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcupti.so.8.0 locally
...
Accuracy at step 980: 0.966
Accuracy at step 990: 0.9671
Adding run metadata for 999

> tensorboard --logdir=/tmp/tensorflow/mnist
Starting TensorBoard 41 on port 6006
(You can navigate to http://127.0.1.1:6006)