2017年8月度 勉強会で調べた事項


[Nagoya.Swift+ 8月度勉強会 - connpass](https://nagoyaswiftplus.connpass.com/event/53940/)で調べた事柄です。

今回から他の方が調べられた事項についても記載していきます。

機械学習
===================================

magentaのソースコードを眺めたりUdacityのトレーニングをやったりしていました。

magenta
-----------------------------------

機械学習により音楽を生成するプロジェクト project magentaの活動は相変わらず活発です。

* [magenta/magenta/models at master · tensorflow/magenta](https://github.com/tensorflow/magenta/tree/master/magenta/models)

Qiitaにも動かすための手順が公開されていますね。

* [人工知能時代の音楽制作への招待 - Google Magenta 解説&体験ハンズオン (自習編) - - Qiita](http://qiita.com/icoxfog417/items/f198f2e030d861d7bbf4)

上記の手順に従って東方プロジェクト(確か永夜抄)のmidiで動かしてみたときの出力結果はこんな感じでした。どことなく赤いフリーペーパーの匂いがします。

* [Hotpepper by Ryuichirou Kitano](https://soundcloud.com/ryuichirou-kitano/hotpepper)


気がついたらドラムの出力を行えるようになっていたのが驚きでした。試してみたいです。

* [magenta/magenta/models/drums_rnn at master · tensorflow/magenta](https://github.com/tensorflow/magenta/tree/master/magenta/models/drums_rnn)


kokoro
-----------------------------------

magentaを眺めていたら[magenta/kokoro](https://github.com/tensorflow/magenta/tree/master/kokoro)という気になる名前のフォルダがあったので何者か調べようとしていました。

[2016-jenkins-world-jenkins_inside_google.pdf](https://www.cloudbees.com/sites/default/files/2016-jenkins-world-jenkins_inside_google.pdf)を参照したところ、Google内部で使っているCIツールの名称のようですね。

* [tink/kokoro at master · google/tink](https://github.com/google/tink/tree/master/kokoro)

Udacity
-----------------------------------

機械学習のトレーニングで何がオススメか聞かれるのですが、やっぱりAndrew Ng先生の[Machine Learning | Coursera](https://www.coursera.org/learn/machine-learning)が良いと思います。

ただし、かなり気合を入れて時間を確保する必要があるかと思いますし(3度ほど挫折しました)、OctaveじゃなくてPythonでやりたいという思いもありましたので、僕はGoogleのコースをおすすめします。

* [Deep Learning | Udacity](https://www.udacity.com/course/deep-learning--ud730)

先行して取り組んでいる方のコードもまま見受けられますので、人気もあるのかと思います。

* [rndbrtrnd/udacity-deep-learning: Udacity Deep Learning MOOC assignments](https://github.com/rndbrtrnd/udacity-deep-learning)

ただ、大概の場合、コピペしても動きません。例えば[tf.concat](https://www.tensorflow.org/api_docs/python/tf/concat)は過去のバージョンと使い方が少々変わっているみたいです。

``` Python
  ix = tf.Variable(tf.truncated_normal([vocabulary_size, num_nodes], -0.1, 0.1))
  fx = tf.Variable(tf.truncated_normal([vocabulary_size, num_nodes], -0.1, 0.1))
  cx = tf.Variable(tf.truncated_normal([vocabulary_size, num_nodes], -0.1, 0.1))
  ox = tf.Variable(tf.truncated_normal([vocabulary_size, num_nodes], -0.1, 0.1))
  # Doesn't work
  # sx = tf.concat(1, [ix, fx, cx, ox])
  sx = tf.concat([ix, fx, cx, ox], 1)

```


今回取り組んだ例題はこんな感じです。

* [tensorflow/5_word2vec.ipynb at master · tensorflow/tensorflow](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb)

* [tensorflow/6_lstm.ipynb at master · tensorflow/tensorflow](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/6_lstm.ipynb)


6.LSTMは
[About the Test Data](http://mattmahoney.net/dc/textdata)から取得したWipediaのデータを使って学習して英語っぽい何かを喋らせる、と言った内容です。学習前はほぼランダムですね。

```
ot zmwpnsdlhbt orh g uhn x q dzilnnjkheet rdu jaf zakdfeaf gka ez pa fc saj seo
 oiipenfkniemohxxiuugdbsmntyae njrzze ysptv g f ucwzjstprjetktnr rqu sgkqeeg wgn
rio gxiaagltsenb zp ihacvzhlruwniafer ribrignq nljsc vaucyttmzhienn u rwhq gu ii
n on mdpy mn eybllngudeekm lzcorecvhhgxeniyuxq  fkk ato  k yl sunksjcinafgjnak i
cybdd etizneliudnsrnoqam  hcemiqip ue lioffhe y ujq eyjpyxiebdvqvyn pczitcvssft
```

学習後はこうなります。英単語が見受けられますね。

```
voly stated beath or were mhyn spains consenty prime importa studied to duc comm
y partiather conspition in rishen alpharry in with the stage simpos fabouting th
way earl war scokiu as the film formbus painpents their flagned are sternincrati
ameritially coderish adomecord lyhas orgers spipal days and for log while minocr
 a side the rearory the air mager have days yorge as medi american outsom be cou
```


Tensorflow
-----------------------------------

チュートリアルが豊富なのがTensorflowのいいところですね。

* [tensorflow/mnist_softmax.py at r0.7 · tensorflow/tensorflow](https://github.com/tensorflow/tensorflow/blob/r0.7/tensorflow/examples/tutorials/mnist/mnist_softmax.py)

* [vahidk/EffectiveTensorflow: TensorFlow tutorials and best practices.](https://github.com/vahidk/EffectiveTensorflow)

一押しはこれです。

* [n-kats/tf-gogh: tensorflowでchainer-goghを書いた](https://github.com/n-kats/tf-gogh)


Web Application 開発環境の構築
==================================

Webアプリの開発環境を2種類の方法で作成されていました。

Vagrant + VirtualBox
----------------------------------

Cent OSを使ってWebアプリの開発環境を構築されてました。手順は次の動画を参考にされたそうです。

* [ローカル開発環境の構築 [macOS編] (全14回) - プログラミングならドットインストール](http://dotinstall.com/lessons/basic_localdev_mac_v2)

Docker Compose
----------------------------------

Docker Composeを使ってWebアプリ(Nginx + Rails + MySQL)の構築をされてました。Qiitaにも次の手順が見つかりました。

* [Docker compose ことはじめハンズオン - Qiita](http://qiita.com/TsutomuNakamura/items/7e90e5efb36601c5bc8a)

プレゼン資料作成
===================================

[HackMD](https://hackmd.io/)でプレゼン資料を作成され、TensorFlowのMNISTについて解説を作成されている方がいました。

作成されていた資料はこちらです。

* [Tensorflow Tutorialを試してみて - HackMD](https://hackmd.io/p/HkmeOQHub#/2)

次回予告
===================================

次回は9/16(土)開催予定です。

* [Nagoya.Swift+ 9月度勉強会 - connpass](https://nagoyaswiftplus.connpass.com/event/53941/)