Pytorch と Tensorflow( と Keras)
1.背景
- PytorchでCNN,RNN,GANなど一通り学習した段階で、Tensorflowも使えたら良いなと思った。
-
CIFER-10 でチュートリアル的なCNNをベースに、両者を比較してみる。
- 書籍をベースにTensorflowコードを実装したら、Kerasと混じっていて多少混乱・・・。
- Tensorflowと、Tensorflowに取り込まれたKeras。
- ラッパーとしての独立Kerasも存在する。
- 書籍をベースにTensorflowコードを実装したら、Kerasと混じっていて多少混乱・・・。
-
Machine Learning Workflow
- 頭の整理のためにワークフローを意識しながら勉強中。今回はこのあたりの話。
# Step Target Scope Machine Learning Workflow 1 Retrieve o Explore & Process Data 2 Clean & Explore Explore & Process Data 3 Prepare/Transform o Explore & Process Data 4 Develop & Train Model o Modeling 5 Validate/Evaluate Model Modeling 6 Deploy to Production Deployment 7 Monitor and Update Model & Data Deployment
2.勉強したこと
No | 比較ポイント | Pytorch | Tensorflow ( with Keras inside ) |
---|---|---|---|
1 | Retrieve | ダウンロードしたあと、ローカル保存を勝手にやってくれる。再利用時にダウンロードしないので楽。ただしデータ形式が良く分かっていない。(バイナリ?) > from torchvision import datasets > train_data = datasets.CIFAR10('data', train=True, download=True, transform=transform) |
numpy.ndarrayの形でダウンロードまで。保存したければ、自分でcsvファイルにでも出力すれば良さそう。 > from tensorflow.python.keras.datasets import cifar10 > (x_train, y_train),(x_test, y_test) = cifar10.load_data() |
2 | Clean & Explore | CIFAR-10とかきれいなデータセットを使ってしまうと、ここはあまり勉強にならない気がする。 | (略) |
3 | Prepare/Transform | 正解データはクラス番号として扱う。 | 1-hot vector化が必須?(多分) |
4 | Develop & Train Model | モデル定義は同じように記載できる。 | ・モデル定義は同じように記載できる。 ・Trainingパートはやけにすっきりかけた。(Kerasのおかげ) ・また、TensorBoardがツールとして付いていて良い。 |
3.利用環境
No | 名称 | 状況 |
---|---|---|
1 | CPU | AMD Phenom(tm) II X6 1090T 3.20GHz これが AVX(Advanced Vector Extensions) を搭載しておらず、Tensorflowはver=1.5.0止まりとなってしまう。 |
2 | GPU | GeForce GTX 1060 6GB Jupyter notebookに多少メモリ開放バグあるみたい? たまに6GB上限を気にするレベルで、とりあえずまだ大丈夫。 |
3 | Memory | 16GB(あまり関係ないけど) 機械学習のため秋葉原で中古メモリ増設。4->16で色々快適に。 |
4 | Python | Windows, Anaconda3-5.3.1 でver3.6の仮想環境(Tensorflow対応から3.6とした) No5/No6はPython仮想環境で分けている。 |
5 | Pytorch | Version 1.1.0 py3.6_cuda90_cudnn7_1 |
6 | Tensorflow | Version 1.5.0 Visual Studio 2015 Version 14.0.25431.01 Update 3 CUDA V9.0.176 cuDNN v7.0.5[Dec 5, 2017], for CUDA 9.0 |
- 初めてTensorflowでのDeep Learningに成功!(Hello Worldとか1+2=3止まりでは無く)
- Tensorflowは環境構築が大変だった。
- ライブラリのバージョン依存関係について、Tensorflow公式サイトにあるので要注意。
- ブログ記事などから入ってしまい、理解できるまで混乱した。
- あとCPUが古く
AVX非対応
からのバージョン1.5.0
縛りとか・・。 - セットアップだけでいうと、GPU利用がすんなり行ったため、Pytorchのほうが好き。
- Tensorflowは環境構築が大変だった。