AIがブーム、ということで、生まれて初めての機械学習の勉強をしてみた。
で、 CNNというモデルで画像認識ができるがRNN(LSTM)というモデルを使うと文章自動作成ができるらしい、 というところまで勉強したので lstm_text_generation.py を使って文章作成のお遊びをしてみようと思った。 (なお、word2vecとかを使って単語ベースで推測させるようにすると結構なAIになりそうだったが、 そこまでの時間はないので今回はあきらめた。)
今使っているWindows10のノートパソコンにNVIDIA GeForce GT650Mが積んであるのだが、 これがちょうど CUDA Compute Capability 3.0 なのでTensorFlow 1.5のGPU版が動作できるらしい。 ということでこのパソコンで学習させるようにした。
バージョンの依存が厳しいらしいけどTensorFlowの公式ページの 記載通りにしておけば大丈夫だった。
上の4つをインストールしたら、あとはpip3からtensorflow-gpuとkerasをインストールする。 あとモデルの保存のためにh5pyもインストールする。
C:\>pip3 install --upgrade tensorflow-gpu keras h5py
なお、tensorflowのGPU版とCPU版はアンインストール/インストールで切り替えできた。 何回か試してみたところ、GPU版のほうが速いことが多かった。 ただしパラメータによってはCPU版の方が少し速いこともあるようだった。
GPU版からCPU版へ:
C:\>pip3 uninstall tensorflow-gpu C:\>pip3 install tensorflow
CPU版からGPU版へ:
C:\>pip3 uninstall tensorflow C:\>pip3 install tensorflow-gpu
例として、「銀河鉄道の夜」を学習させたやり方がこちら。
300回の学習が終わると"ginga_300.h5"ファイルが出来上がるので、 これを保存しておく。
学習には計算リソースが必要だが、 既に学習したモデルを使って文章を生成する分には あまりリソースは使わなくて済むようだ。 それだけならVPSでも何とかなる。
環境:CentOS7 (on Conoha)
# yum install -y https://centos7.iuscommunity.org/ius-release.rpm # yum install python36u python36u-libs python36u-devel python36u-pip # pip3.6 install --upgrade tensorflow keras h5py
pythonとtensorflowとkerasをインストールした後、次の手順で文章生成した。
「銀河鉄道の夜」風の文章と「走れメロス」風の文章を生成させてみた。
学習させた文章 | 全文の文字数 | maxlen | step | 文章生成時の書き出し | diversity |
---|---|---|---|---|---|
銀河鉄道の夜 | 128732 | 40 | 1 | 「ではみなさんは、そういうふうに | 0.5 |
走れメロス | 29562 | 40 | 1 | メロスは激怒した。 | 0.88 |
(あらかじめ生成させておいた文章の中からランダムに選択して表示します。)
「銀河鉄道の夜」は、日本語の文法を理解するまでには教育できてないようである。一方、「走れメロス」は文字数が少ないために原文をかなり暗記してしまっているが、応用はあまり利かない。
まあ単語ではなく文字で文章生成してる以上は、こんなもんか。
最終更新日:2018/08/11