お手軽気軽手ぶら無料！IBM Data Scientist Workbenchで深層学習TensorFlow, Chainer, Kerasにダイビングする（途中まで）

IBMが無料で提供する Data Scientist Workbench https://datascientistworkbench.com/
PCに環境を用意せず、ブラウザ上でデータ分析が行えるデータ分析のクラウド環境。恐らくこの環境に馴染んでもらってIBM Bluemixに巻き込もうということだと思うのですが、以下提供されているツール群はオープンソースで提供されている標準的なものなので、IBMにロックインされることもありません。IBM様に感謝しつつ、使いましょう。

注意：データの秘匿性は無いようなので、社外秘や顧客データはアップしないほうが良いです。


# できること・使い方・スペック
参考資料 [Data Scientist Workbench 入門](http://www.slideshare.net/sohkaijima1/data-scientist-workbench)

## できること
- データ管理
    - マイ・データ
        - データのアップロードなど
- データ準備
    - OpenRefine
        - Googleが開発してオープンソースにしたデータ加工ツール
- データ分析
    - Jupyter Notebook
        - Pythonでデータ分析するなら事実上標準のJupyter環境。
        - Python, Scala, Rの使用が可能。
        - 今回はPythonを用います。 
    - Zeppelin Notebook
        - Jupyter Notebookに似ていますがApache Zeppelinの環境が再現されている。
        - Python, Scala
        - すみません、触ったことなくスルー。
    - RStudio IDE
        - Rでデータ分析するなら事実上標準のRStudio環境。
        - RStudioをPCにインストールしている人は違和感があるかも知れませんが、その環境がそのまま（細かなところは違いがあるかも知れないですが）ブラウザ上で再現されている。今回はJupyter Notebookを用いるのでスルー。
    - Seahorse
        - コマンドではなくブロックを組み合わせるように分析パイプラインを組んでデータ分析を行うツール。Azure MLかWekaをご存知ならそれに似ていると思う。
        - Sparkが使えるらしいですが、触ったことなくスルー。
    - Text Analytics
        - 自然言語処理のツールらしい。
        - すみません、触ったことなくスルー。

## スペック
ごめんなさい、不明。
[Data Scientist Workbenchを使ってみた（途中）](http://qiita.com/ayaeide/items/01b9b0d0010d1f6c8a43) や[Data Scientist Workbenchのすすめ（１）](http://qiita.com/zanjibar/items/869076154ce890f1e1e2)によるとデータ容量は100Gまでのようです。

# アカウント登録・ログイン
Linked in, Google, Git, Facebook, IBM提供のBig Data Universityのアカウントがあればそれでログイン、あるいは独自にアカウントを登録する。
ログイン後ユーザー用の環境設定に20-30分くらい掛かるようだ。何をしているのだろう？

# Jupyter NotebookでPythonを使う
Jupyter Notebookの使い方自体は先程紹介した[Data Scientist Workbench 入門](http://www.slideshare.net/sohkaijima1/data-scientist-workbench)のp24-p31にあります。ざっくり言いますと

- Jupyter Notebookを選択
- 右上の青いアイコンで Python3 （かPython2）を選択
- In []:  となっている右側のテキストボックスにコマンドを入力
    - Enterで改行が可能
- Shift + Enter あるいは 画面上の ▶| ボタンでコマンドを実行

# TensorFlowのチュートリアルを実行
[TensorFlow](https://www.tensorflow.org/)はGoogleが開発した機械学習のフレームワークで深層学習などができる。言語はPython。[チュートリアル](https://www.tensorflow.org/versions/r0.10/tutorials/index.html)を実行してみよう。ほら、Windows環境にはTensorFlowは標準では対応してなくてDockerが必要なので、躊躇していた方が多いのではないですか。もうすぐ実行できるのですよ。
[チュートリアル](https://www.tensorflow.org/versions/r0.10/tutorials/index.html)は英語なのでそこも躊躇している方がいるかと思いますが、幸いQiitaの同志をはじめ多くの方が和訳や実行記録を残してくださってます。

## [MNIST For ML Beginners](https://www.tensorflow.org/versions/r0.10/tutorials/mnist/beginners/index.html#mnist-for-ml-beginners)
手書き文字認識のチュートリアルです。
[TensorFlow MNIST For ML Beginners チュートリアルの実施](http://qiita.com/uramonk/items/c207c948ccb6cd0a1346)と、本来はTensorFlowのインストールからが必要ですが、Data Scientist WorkbenchにはTensorFlowもインストール済みのようで、インストールは不要です。
たくさん和訳や実行記録がありますが、今回は[TensorFlow MNIST For ML Beginners 翻訳](http://qiita.com/uramonk/items/13bb92e9c6a1b548ac4b) か [TensorFlowチュートリアル - ML初心者のためのMNIST（翻訳）](http://qiita.com/KojiOhki/items/ff6ae04d6cf02f1b6edf)を。
Qiita記事中の下記のような灰色背景のコード

```py3
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
```
をJupyter Notebookのコード入力用のテキストボックスに入力して実行します。

、、、チュートリアル記事中のコードを実施し終わると0.91に近い値が出力されるはずです。もちろん先は長いのですが、深層学習恐れるに足らず、あっけないですね。

## [Deep MNIST for Experts](https://www.tensorflow.org/versions/r0.10/tutorials/mnist/pros/index.html#deep-mnist-for-experts)
[TensorFlow Deep MNIST for Experts 翻訳](http://qiita.com/uramonk/items/fa9cf1f27bb9387a8c3b) を参照しながら実行できるでしょう。

```py3
for i in range(20000):
```
のところで多めにループを回しているので10-20分程度掛かりますがWorkbench環境でもJupyter Notebookで試せました。

、、、というところで次の

- TensorFlow Mechanics 101
- tf.contrib.learn Quickstart

を試したいところだが上手く動かない。 2016/09/19現在 WorkbenchのTensorFlowは 0.8.0 のようです。それが影響しているのかも。Updateを試みたが、、、
だめ。ごめんなさい。とりあえずTensorFlowのチュートリアルはここまでで断念。

```py3
!pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp34-cp34m-linux_x86_64.whl

!pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp34-cp34m-linux_x86_64.whl
```
# Chainerのチュートリアルを実行
## Chainerのインストール
TensorFlowと異なり、インストールされてないので自前でインストールする。
Chainerのインストールは http://docs.chainer.org/en/stable/install.html とのことですが、必要なものは既に入っているようで、下記だけでインストール出来ました。

```py3
!pip install chainer
```

## [Introduction to Chainer](http://docs.chainer.org/en/stable/tutorial/basic.html)
c.f. [Chainerチュートリアル の和訳【Chainerの紹介と多層パーセプトロン】](http://www.iandprogram.net/entry/chainer_japanese)
特に困ることなくチュートリアルのコードを実行可能です。

* [Recurrent Nets and their Computational Graph](http://docs.chainer.org/en/stable/tutorial/recurrentnet.html)
も途中まで動いたのだけれど x_list 変数にあらかじめ単語のリストを入れる必要があるとのことで、ごめん保留

# Kerasのチュートリアルを実行
[Keras](https://keras.io/ja/)とはTensorFlowとTheanoをバックエンドとして、フレームワークをもっと書きやすくした？ようなもの。

## Kerasのインストール
https://keras.io/#installation ですが下記だけでOK

```py3
!pip install keras
```

## チュートリアルがないようなので、六本木で働くデータサイエンティストのブログより「[KerasをTensorFlowバックエンドで試してみた：「もっと多くの人に機械学習とDeep Learningを」という時代の幕開け](http://tjo.hatenablog.com/entry/2016/06/09/190000)を実行してみる
* テストデータをあらかじめData Scientist Workbench上にダウンロードしておく
    * !wget https://github.com/ozt-ca/tjo.hatenablog.samples/raw/master/r_samples/public_lib/jp/mnist_reproduced/short_prac_train.csv
    * !wget https://github.com/ozt-ca/tjo.hatenablog.samples/raw/master/r_samples/public_lib/jp/mnist_reproduced/short_prac_test.csv
* 記事中には ~/.keras/keras.json の設定等ありますがData Scientist Workbench上ではこの設定をせずにTensorFlowをバックエンドとして実行可能のようです（TheanoをインストールしておらずTensorFlowのみだから？）
* 後はコードを入力して実行でOK

以上、Data Scientist Workbenchを用いてTensorFlowのチュートリアル途中まで、Chainerのチュートリアル途中まで、Kerasの実行練習を行いました。Data Scientist WorkbenchはRも深層学習以外も出来るので。またいずれ。