Interface2017-12号第三章メカニズム実験 それらしい写真を自動生成する人工知能

必要なファイル
dcgan.py
setup.sh
test.py
train.py
util.py

学習をかけると100ステップで約15分かかっているので10,000ステップは
22時間かかってしまうので1000ステップに縮小

結果
f:id:bitop:20171124170838j:plain

食べ物とはわからないレベルになった。
今度時間があるときに再実行してみよう

Interface2017-12号第2章メカニズム実験 勝手に成長する人工知能を読む

必要なファイル
agent.py
environment.py
play.py
qfunction.py
replay_memory.py
train.py
を用意
$python tarin.py
で実行させたがreplay_memory.pyでメモリーエラー
MemTotal: 6.0 GB
MemFree: 3,3 GB

replay_memory.pyで要求されたメモリーは約2.8Gなので
python実行環境などに使用しているメモリーも合わせ3.3Gを
オーバーしたのであろう

リプレイメモリへの保存数
memory_size = 100000 #1000000->100000
に減らしたらなんとか起動
しかし5時間立っても終了しないインジケータをみると2%の進捗率のようである
終了予想時間を計算すると12日後かな。

最大のステップ数
を500000にする
なんとか実行可能となる。
意外とうまく動けている。
モリーGPUの増設とかが必須になるのだろうか

f:id:bitop:20171124050759p:plain

Interface2017-12号第2章メカニズム実験 勝手に成長する人工知能を読む

ステップ1 実行環境を準備する

pip install gym
pip install gym[atari]

gym[atari]でエラーがでた。
xorg-devをinstallするとエラーが収まった。
掲載されていたソースを実行させたところ
すぐ終了するのでrange(1000)を10000000まであげた。  

f:id:bitop:20171119111012p:plain

Interface2017-12号第1章メカニズム実験 対話する人工知能を読む

仮想環境からtensorflow1.4.0を削除
pip uninstall tensorflow
改めてtensolflow1.0.1をインストール
(GPUなし python version=3.5.*)
pip install --ignore-installed --upgrade https:storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp35-cp35m-linux_x86_64.whl

実行させてみるが学習ループが何回か回るとInvalidArgumentErrorで止まるのでrun.py内のstep_times = 10000を5にすると最後まで行く
20にするとエラーがでる。15にしてstep_per_checkpoint を 100から3にする
十分学習しているとは思えないが先に進む
学習後に
dictionary_i2w.json,dictionary_w2i.json
tmp/checkpoint,model.ckpt.data-00000-of-00001,model.ckpt.index,model.ckpt.meta
のファイルが作成されている

slackのアカウントを取得しAPIをもらう
Botをつくる。

こちらの仮想環境にslackbotをインストールする
pip install slackbot
/home/user_name/anaconda3/envs/tesorflow/lib/python3.5/site-package/slackbot/内にsetting.pyが
あったのでそちらにAPI Tokenを書き込む

$python run.pyとしてボット対話可能となったので
slackサイトにいきbotに質問を入力する

run.pyにデバッグ用のprint文をいれておき
message変数もprintするようにしておいたが
出力せず。
学習不足?

f:id:bitop:20171118181958p:plain

Interface2017-12号第1章メカニズム実験 対話する人工知能を読む

ステップ3 Neural Conversational Modelの構築

tensorflowはver 0.9.0をいれていたが最新版にアップグレードする
仮想環境に入ってpip instal -U tensorflowでver1.4.0になった。

GitHubよりseq2seq_model.py,train.py,util.pyをdownloadする
$python train.pyとするが(4)モデル作成のところでSeq2SeqModelが呼び出している  
seq2seq.pyの内部でエラーがでる。  

テンソルフローのGithubにいきseq2seq_model.pyとseq2seq.pyを差し替え、
data_utils.pyを追加したがエラーが収まりそうにないので今日はここまで。

ローカル名前解決構築

宅内のサーバにアクセスするときIPアドレスを直接入力していた(数が少ないので暗記していた)
まったく困ってはいなかったが「ホスト名だけでサーバーにアクセスできる」という記事が あったので ラズパイに名前解決ソフトを導入してみることにした。

Avahiですでにラズパイには入っていたが稼動はしていなかった。

$systemctl start avahi-daemon
$systemctl list-unit-files -t service | grep avahi
avahi-daemon.service enabled
とでたので
python -m http.server 
#(ver 2.* ではpython -m SimpleHTTPSerVer 8080)
としてWindow機のブラウザーのURL欄の
http://パソコンのホスト名.local:8080でアクセスできた

Interface2017-12号第1章メカニズム実験 対話する人工知能を読む

STEP 2 日本語解析の処理(つづき)

TensorFlowのinstall

condaの仮想環境を使ってinstallする

仮想環境管理のコマンド
◆仮想環境を作る
    conda create -n(または--name) py27(これが仮想環境の名前) python=3.5(pythonのバージョンを指定可能)
  パッケージが全部入っている仮想環境を構築する
    conda create -n <my_env_name> anaconda(これを最後に追加する)
◆すでにある仮想環境をクローンして新しい仮想環境を作る
    my_env -> cloned_envの場合
      conda create -n cloned_env --clone my_env 
◆仮想環境をアクティベート(有効化)
    source activate py27(仮想環境名)
    通常状態だとrootがデフォルトなので他の仮想環境を有効にするにはこれが必要
      仮想環境が有効化するとプロンプトの前に仮想環境名がつく
◆仮想環境をディアクティベート(無効化:環境がなくなるのではない)
    source deactivate
◆現在currentな仮想環境
      conda info -e(または--envs)
      現在カレントな環境にはアスタリスクがつく

◆パッケージのinstall(仮想環境に入ったあと)
    conda install <package name>
◆パッケージのuninstoall(仮想環境に入ったあと)
     conda uninstall <package name>
◆仮想環境の削除
  conda remove -n <my_env_name> --all
◆その他
   ヘルプ
   conda help

ここを参考にinstall

Ubuntu Linux に TensorFlow をインストール – Python でデータサイエンス

GPUが使えない、Pythonのバージョンは3.5

$conda create -n tensorflow python=3.5 anaconda
全部いれておきかたので文末にanacondaを追加した

$conda info -e
tensorflow /home/user_name/anaconda3/envs/tensorflow
root * /home/user_name/anaconda3

source activate tensorflow

$pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl
最後にinstallが成功したとのメッセージがでたので

import tensorflow as tf  
hello = tf.constant('Hello, TensorFlow!')  
sess = tf.Session()  
print(sess.run(hello))  
#結果  
b'Hello, TensorFlow'