- 投稿日:2019-01-27T02:14:12+09:00
Pycharm + Tensorflow + Virtualenv/pyenvの環境構築
Tensorflowの環境を作ろうとして、ハマったのでメモ。 ポイントだけ書いておく。
用語
さらっとおさらい
統合開発環境PyCharm
PythonのIDE。有名なので使います。今回はCE版
https://qiita.com/yamionp/items/f88d50da8d6b548fc44cpyenv
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/1432578d364985f6cb06brew cask install pycharm-cepyenvとpyenv-virtualenvをインストール
https://qiita.com/KazaKago/items/587ac1224afc2c9350f1
pyenv-virtualenvのインストール$ brew install pyenv-virtualenvPythonをインストール
例は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 rehashxcode-select --installがうまくいかない場合(ここでハマった!!)
Pythonがインストールできない場合、xcode-select --installを打てというサイトが多いので、
やってみたがうまくいかない。
https://qiita.com/zreactor/items/c3fd04417e0d61af0afexcode-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 pipTensorFlowのインストール
TensorFlowのインストール。適宜公式を参考に。
https://www.tensorflow.org/install/$ pip install tensorflowPycharmにて指定。
ここの説明があまり書いていないものが多くハマりました。
preference>Project Interpreter>設定ボタンから、先ほど作ったTensorflow環境を「Add」すると、
以下のように追加される。追加されたら、New Projectで新規プロジェクト作成時に、環境として選べるようになる。
- 投稿日:2019-01-27T01:19:48+09:00
AI研究用「打ち出の小槌」サービス(デモ)
こ、これは、、いったい何よ?
- ひと振りするだけで、コインがザックザク出てくる 、というサービス(デモ版)を作ってみた、というお話です。
http://35.237.23.189/jcoin_generator.html- → まずは、[ Shake it ! ] ボタンを押してみてください。
(URLは変更または廃止することがあります)- 以前、コインをバラまいた画像から合計金額を推定するAI という記事を投稿しましたが、それに用いた学習データ生成エンジンを切り出し、 サービス化したものです。
そ、それで、、何をしたいのよ?
- いまどきのAI(人工知能)といえば、機械学習とその応用を指すことが多いように思います。
- 機械学習は一般に、たっくさんのデータが必要となります。
- 機械学習の中ではポピュラーな「教師あり学習」については、個々の学習用データに「教師データ」(=正解ラベル)を付与する必要があります。
- たとえば、画像につけるタイトルが教師データとなります。
(下記では、ねこ、いぬ、さる)
= ねこ
= いぬ
= さる
- ところが、これ(教師データを付与すること=ラべリンク)は、死ぬほど手間がかかります。
- きょうびの機械学習では、何千個、何万個、・・のラべリングが必要になることがありますが、これらは通常、人間が作業せざるを得ません。
そんなわけで、フリー?なデータがネット上で用意していただいていたりするわけですが、
http://www.cs.toronto.edu/~kriz/cifar.html
http://yann.lecun.com/exdb/mnist/おっと! まとめてくれてる人がいました。。すばらしい!
https://www.codexa.net/ml-dataset-list/しかし当然ながら、独自のデータを用意したいときは大変!
もっとも、ある程度のデータがたまれば、元データを機械的に加工する「水増し」とよばるデータ拡張が可能な場合はあるにはありますが・・。
=ねこ
=ねこ
=ねこ
もちろん、水増しだけではやっていけません。
ところが、逆に教師データから学習用データを自動生成が可能な機械学習の分野があるのではないか、と考えました。
本件のコインバラまきネタ、などがそういう例です。
=16円
=28円
=12円
=9円
=21円・・・・・
(他にも自動生成ネタがあるのですが、それは別の機会に紹介しようかと・・)実際には、金額そのものが教師データではなく、各種類それぞれのコインの枚数を教師データとしました。データ生成手順は次の通りです。
- 乱数で各コインの枚数を決める。(この時点で金額が確定)
- その後、各コインの枚数に応じたバラまき画像を生成。
これで学習したモデルが、現時点で実用に使えるわけではありません。
しかし、「多くのデータで学習する機械学習のモデルの振る舞い」を研究する材料となり得る、と考えました。
打ち出の小槌サービスの画面を、もう一度参照して下さい。生成するデータの属性や数をパラメータで制御できる、のは自動生成ならでは、です。
こ、このサービスって、今どう使えるのよ?
- と言われると、これは「こんなことができるよー」という単なるデモでして、
- しいて言えば、生成されたページを右クリックとかして「名前を付けて保存」(ウェブページ、完全、=chromeブラウザの場合)とかすると、教師データがHTMLに記載された画像データのセットが得られます。
- しかし、このサービスそのものは、ショボくて安い IAAS の仮想マシンを使っており、大量のデータ生成を想定していません。(酷使するとたぶん死にます。)
- 本当に大量のデータを作りたい場合は、コインバラまきネタのソースコード をとってきて、各自の環境に移植してください。
- 億万長者になれるかも。先は長いですが。
- もし、今年中にこの記事に「いいね!」を100個もらえたら、本件のデータを使って「金額推定コンテスト」を開催しようと企んでいます。(ムリかーー)
【まとめ】本件に限らず、機械学習用のデータを最初から自動生成する仕組みを「打ち出の小槌(うちでのこづち)」と呼ぶことにします。











