20190127のTensorFlowに関する記事は2件です。

Pycharm + Tensorflow + Virtualenv/pyenvの環境構築

Tensorflowの環境を作ろうとして、ハマったのでメモ。 ポイントだけ書いておく。

用語

さらっとおさらい

統合開発環境PyCharm

PythonのIDE。有名なので使います。今回はCE版
https://qiita.com/yamionp/items/f88d50da8d6b548fc44c

pyenv

Pythonのバージョン切り替えに使用
基本的にPythonのバージョンごとに管理
同一バージョンで複数のPython環境を管理不可能(パッケージが混在する)
数値計算用のpython2.7.10と自然言語処理用のpython2.7.10にはならずpython2.7.10として数値計算ようのパッケージと自然言語処理用のパッケージが混在

virtualenv

仮想環境の構築に使用
基本的にディレクトリ単位でpythonのバージョン,パッケージを管理
数値計算用のpython2.7.10と自然言語処理用のpython2.7.10分けて使用可能
https://qiita.com/niwak2/items/5490607be32202ce1314

インストール

brew cask

GUIまでインストールできちゃうhomebrew。便利なので入れておくことをおすすめします。

brew install caskroom/cask/brew-cask

なお、Pycharmはこんな感じでインストールできちゃいます。
https://qiita.com/ryurock/items/1432578d364985f6cb06

brew cask install pycharm-ce

pyenvとpyenv-virtualenvをインストール

https://qiita.com/KazaKago/items/587ac1224afc2c9350f1
pyenv-virtualenvのインストール

$ brew install pyenv-virtualenv

Pythonをインストール

例は3.5.2。TensorflowではPythonのバージョンは「Requires Python 3.4, 3.5, or 3.6」と指定があった
https://www.tensorflow.org/install/pip

インストールできる一覧を表示するにはpyenv install -lと打ち込んで下さい

$ pyenv install 3.5.2
$ pyenv rehash

xcode-select --installがうまくいかない場合(ここでハマった!!)

Pythonがインストールできない場合、xcode-select --installを打てというサイトが多いので、
やってみたがうまくいかない。
https://qiita.com/zreactor/items/c3fd04417e0d61af0afe

xcode-selectの最新バージョン(2354)にMojave用のmacOS SDK headerがデフォルトで入っていないのが原因のようです。マニュアルで以下をインストールする必要あるとのこと。

以下で解決しました

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

TensorFlowの実行環境を作る

こうすることでローカルを汚さずに環境が作れます(例は環境名が"TensorFlow"。適宜変更)

$ pyenv virtualenv 3.5.2 TensorFlow
$ pyenv rehash

作成したTensorFlow用の環境へ切り替え

pyenv globalを使って、作成したTensorFlow環境へ変更

$ pyenv global TensorFlow
$ python -V
Python 3.5.2

うまくPythonのバージョンが切り替わらない場合は、bash_profileに追記

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

反映するのを忘れずにね。

$ source ~/.bash_profile

元に戻したいと時

$ pyenv global system

環境の指定は後述するPyCharmで行うので、ここでTenserFlow環境になっている必要はない

pipのインストール

次にPython向けのプラグイン管理ツールであるpipをインストール

$ sudo easy_install pip
$ sudo pip install --upgrade pip

TensorFlowのインストール

TensorFlowのインストール。適宜公式を参考に。
https://www.tensorflow.org/install/

$ pip install tensorflow

Pycharmにて指定。

ここの説明があまり書いていないものが多くハマりました。
preference>Project Interpreter>設定ボタンから、先ほど作ったTensorflow環境を「Add」すると、
以下のように追加される。追加されたら、New Projectで新規プロジェクト作成時に、環境として選べるようになる。スクリーンショット 2019-01-27 2.11.28.png

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

AI研究用「打ち出の小槌」サービス(デモ)

こ、これは、、いったい何よ?

  • ひと振りするだけで、コインがザックザク出てくる 、というサービス(デモ版)を作ってみた、というお話です。
    http://35.237.23.189/jcoin_generator.html
  • → まずは、[ Shake it ! ] ボタンを押してみてください。
    (URLは変更または廃止することがあります)
  • 以前、コインをバラまいた画像から合計金額を推定するAI という記事を投稿しましたが、それに用いた学習データ生成エンジンを切り出し、 サービス化したものです。

そ、それで、、何をしたいのよ?

  • いまどきのAI(人工知能)といえば、機械学習とその応用を指すことが多いように思います。
  • 機械学習は一般に、たっくさんのデータが必要となります。
  • 機械学習の中ではポピュラーな「教師あり学習」については、個々の学習用データに「教師データ」(=正解ラベル)を付与する必要があります。
  • たとえば、画像につけるタイトルが教師データとなります。
    (下記では、ねこ、いぬ、さる)
    cat.png = ねこ   dog.png = いぬ   monky.png = さる
  • ところが、これ(教師データを付与すること=ラべリンク)は、死ぬほど手間がかかります。
  • きょうびの機械学習では、何千個、何万個、・・のラべリングが必要になることがありますが、これらは通常、人間が作業せざるを得ません。
  • そんなわけで、フリー?なデータがネット上で用意していただいていたりするわけですが、
    http://www.cs.toronto.edu/~kriz/cifar.html
    http://yann.lecun.com/exdb/mnist/

  • おっと! まとめてくれてる人がいました。。すばらしい!
    https://www.codexa.net/ml-dataset-list/

  • しかし当然ながら、独自のデータを用意したいときは大変!

  • もっとも、ある程度のデータがたまれば、元データを機械的に加工する「水増し」とよばるデータ拡張が可能な場合はあるにはありますが・・。

    cat--.png=ねこ cat-.png=ねこ cat---.jpg=ねこ 

  • もちろん、水増しだけではやっていけません。

  • ところが、逆に教師データから学習用データを自動生成が可能な機械学習の分野があるのではないか、と考えました。

  • 本件のコインバラまきネタ、などがそういう例です。
    #000900_0016yen_03(01_01_01_00_00_00).png=16円 #000901_0028yen_07(03_03_01_00_00_00).png=28円 #000902_0012yen_03(02_00_01_00_00_00).png=12円 #000903_0009yen_05(04_01_00_00_00_00).png=9円 #000904_0021yen_03(01_00_02_00_00_00).png =21円・・・・・
    (他にも自動生成ネタがあるのですが、それは別の機会に紹介しようかと・・)

  • 実際には、金額そのものが教師データではなく、各種類それぞれのコインの枚数を教師データとしました。データ生成手順は次の通りです。

    1. 乱数で各コインの枚数を決める。(この時点で金額が確定)
    2. その後、各コインの枚数に応じたバラまき画像を生成。
  • これで学習したモデルが、現時点で実用に使えるわけではありません。

  • しかし、「多くのデータで学習する機械学習のモデルの振る舞い」を研究する材料となり得る、と考えました。

  • 打ち出の小槌サービスの画面を、もう一度参照して下さい。生成するデータの属性や数をパラメータで制御できる、のは自動生成ならでは、です。

こ、このサービスって、今どう使えるのよ?

  • と言われると、これは「こんなことができるよー」という単なるデモでして、
  • しいて言えば、生成されたページを右クリックとかして「名前を付けて保存」(ウェブページ、完全、=chromeブラウザの場合)とかすると、教師データがHTMLに記載された画像データのセットが得られます。
  • しかし、このサービスそのものは、ショボくて安い IAAS の仮想マシンを使っており、大量のデータ生成を想定していません。(酷使するとたぶん死にます。)
  • 本当に大量のデータを作りたい場合は、コインバラまきネタのソースコード をとってきて、各自の環境に移植してください。
  • 億万長者になれるかも。先は長いですが。
  • もし、今年中にこの記事に「いいね!」を100個もらえたら、本件のデータを使って「金額推定コンテスト」を開催しようと企んでいます。(ムリかーー)

【まとめ】本件に限らず、機械学習用のデータを最初から自動生成する仕組みを「打ち出の小槌(うちでのこづち)」と呼ぶことにします。

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