- 投稿日:2019-05-23T15:35:56+09:00
pyenv上でAnacondaを使ったKeras(Tensorflow)のインストール
はじめに
完全に自分用なのでグダグダガバガバです。参考元の記事を見ていただいたほうがいいかもしれません。
大いなる力がない人の為の記事です。環境
- OS : Debian 9.4
- CPU : Intel Core i7-5930K 3.5GHz
- GPU : GeForce GTX 980Ti
- Shell : bash
pyenvのダウンロードとセッティング
参考元 : pyenvのインストール、使い方、pythonのバージョン切り替えできない時の対処法
pyenvを以下のコマンドでGithubからダウンロード(クローン)します。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv~/.bashrcにPATHを追加しましょう。
$ echo '##-------- pyenv settings --------##' >> ~/.bashrc $ echo 'export PYENV_HOME=$HOME/.pyenv' >> ~/.bashrc $ echo 'export PATH=$PATH:$PYENV_HOME/bin' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrcエディターで.bashrcに直書きでも大丈夫です。
export PYENV_HOME=$HOME/.pyenv export PATH=$PATH:$PYENV_HOME/bin eval "$(pyenv init -)"最後の evalコマンドを忘れないようにしましょう。
"pyenv init -"ではpyenvで使用する環境変数を出力します。
evalコマンドでは直後の文字列を評価した値(コマンドとして実行した出力)を実行します。"pyenv init -"の出力export PATH="/home/username/.pyenv/shims:${PATH}" export PYENV_SHELL=bash source '/home/username/.pyenv/libexec/../completions/pyenv.bash' command pyenv rehash 2>/dev/null pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")";; *) command pyenv "$command" "$@";; esac }追加したPATHを適応させましょう。
下記のコマンドを実行するか,再度ログインしましょう$ source ~/.bashrcpyenvでAnacondaをインストール
下記のコマンドでAnacondaをインストールしましょう。Anacondaのバージョンはお好きにどうぞ。
$ pyenv install anaconda3-5.3.1pythonのバージョン切り替えは,"local" オプションで今いるディレクトリに,"global" オプションで全体に反映されます。
$ pyenv local anaconda3-5.3.1 $ pyenv global anaconda3-5.3.1適応されているかpythonのバージョンを確認しましょう。
$ python -V Python 3.6.8 :: Anaconda, Inc.上のようになれば大丈夫です。 Python自体のバージョンは変わることがありますので末尾に "Anaconda, Inc." と入っているのが確認できれば問題ありません。
パッケージのインストール
KerasとTensorflowをインストールしましょう。
GPUも使うのでtensorflow-gpu, cudatoolkit, cudnnを入れましょう。$ conda install cudatoolkit==9.0 $ conda install cudnn==7.3.1 $ conda install tensorflow-gpu==1.9.0 $ conda install keras==2.2.4私の環境ではこれでkerasのexampleがGPUで動作しました。
tensorflow-gpuを最新の1.13.xにすると,CUDA Tool KitとかcuDNNのバージョンがよくわからないことになるので動く組み合わせを探してみてください。補足:GPUメモリの制限
複数人で使うことを想定したマシンにはGPUメモリに制限をかけなければメモリの取り合いになってしまいます。
制限をかけるには以下のコードをソースの先頭に記入してください。
0.25 は約25%ではなくあくまでも目安です。私の環境では約29%(1818MiB/6083MiB)の制限がかかりました。import warnings warnings.simplefilter(action='ignore', category=FutureWarning) # GPUメモリ制限 import tensorflow as tf config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.25 config.gpu_options.visible_device_list = '0' session = tf.Session(config=config) from keras import backend as K K.set_session(settion)参考にしたサイト
- 投稿日:2019-05-23T14:20:49+09:00
EdgeTPU(USB接続)時にデバイス見つからない問題
もうすぐ夏ですね、めちゃ暑いのなるべく避けたいそんな時にCoral betaのEdgeTPUを使用して熱くない推論をしたいところ。
適当なLinux BoxにEdgeTPUぶっ刺してTensorFlowLiteのモデルさえ用意すれば一桁Wでガンガン推論してくれます。
デバイス無いよ〜 (T^T)
shellERROR: Failed to retrieve TPU context. ERROR: Node number 0 (edgetpu-custom-op) failed to prepare. Failed in Tensor allocation, status_code: 1やるたびに忘れるのでφ(..)
実行時にユーザーにUSBアクセラレーターへのアクセス権限がついてないぽいので、それをつければOK
実行したいユーザー(hoge)にplugdev
というグループをつければ良いsudo adduser hoge plugdev
- 投稿日:2019-05-23T11:59:14+09:00
TensorFlow.jsでDeepLearning(学習用画像データURLの収集)
こんにちわ。Electric Blue Industries Ltd.という、ITで美を追求するファンキーでマニアックなIT企業のマッツと申します。TensorFlow.jsでDeepLearningをする際に学習データ用の画像を収集することがあると思いますが、Google画像検索を使って簡単におこなう小ネタです。
Google画像検索で取得したい画像がリスト表示されたところで、下記のjavascriptをブラウザ(Google Chrome推奨)の開発者ツールのコンソールで実行すると、表示された画像のソースURLがCSVファイルとしてダウンロードできます。
ggl_image_urls.js// 検索結果のHTMLソースから各検索結果のアイテムごとにソースURLを取得し配列化 urls = Array.from(document.querySelectorAll('.rg_di .rg_meta')).map(el=>JSON.parse(el.textContent).ou); // 改行コードを各行末尾に付けたCSVとして吐き出す window.open('data:text/csv;charset=utf-8,' + escape(urls.join('\n')));
追伸: Machine Learning Tokyoと言うMachine Learningの日本最大のグループに参加しています。作業系の少人数会合を中心に顔を出しています。基本的に英語でのコミュニケーションとなっていますが、能力的にも人間的にもトップレベルの素晴らしい方々が参加されておられるので、機会がありましたら参加されることをオススメします。