20190523のTensorFlowに関する記事は3件です。

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 ~/.bashrc

pyenvでAnacondaをインストール

下記のコマンドでAnacondaをインストールしましょう。Anacondaのバージョンはお好きにどうぞ。

$ pyenv install anaconda3-5.3.1

pythonのバージョン切り替えは,"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)

参考にしたサイト

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EdgeTPU(USB接続)時にデバイス見つからない問題

もうすぐ夏ですね、めちゃ暑いのなるべく避けたいそんな時にCoral betaのEdgeTPUを使用して熱くない推論をしたいところ。

適当なLinux BoxにEdgeTPUぶっ刺してTensorFlowLiteのモデルさえ用意すれば一桁Wでガンガン推論してくれます。

デバイス無いよ〜 (T^T)

shell
ERROR: 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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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の日本最大のグループに参加しています。作業系の少人数会合を中心に顔を出しています。基本的に英語でのコミュニケーションとなっていますが、能力的にも人間的にもトップレベルの素晴らしい方々が参加されておられるので、機会がありましたら参加されることをオススメします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む