20190327のTensorFlowに関する記事は3件です。

WindowsのJupyter NotebookからKerasが使えるようにする

はじめに

わかってみると同じような記事はいろいろあったのですが、とりあえず現時点で表記のことを行うための手順をメモします。

そもそもなぜこの手順が必要なのか

Jupyter Notebookの前提になっているanacondaには不足モジュールの追加導入の機能があり、本来はこの機能を使うだけで簡単にKerasも使えるようになるはずです。
しかし、現在

anacondaで導入されるpython: version 3.7

kerasの前提のpython: version 3.6

となってしまっており、単純な追加導入ではkerasが導入できないのです。

対応手段

anacondaには、仮想環境追加機能があり、ベースとまったく別のpython環境を作ることができます。この方法を使って初期導入環境とは別のpython 3.6環境を別途作ることになります。

前提

"Anaconda 2018.12 for Windows Installer"をダウンロード、インストールした直後の状態を前提とします。この本体の導入手順に関しては他に手順書がいろいろあるので省略します。

手順

それでは、具体的な手順を説明します。

anaconda promptの起動

最初に行うのは、anaconda promptの起動です。
スクリーンショット 2019-03-27 17.00.22.png

図のようにWindowsメニューからAnaconda3配下の"Anaconda Prompt"を選択します。

conda コマンドの実行

プロンプトから下記のコマンドを順に実行します。
Yes / Noの確認のプロンプトが表示されたらすべてYで答えるようにします。

仮想環境 keras-env の作成

(base) C:\Users\makaishi> conda create -n keras-env python=3.6

仮想環境 keras-env の活性化

(base) C:\Users\makaishi>activate keras-env

仮想環境に追加モジュールの導入

(keras-env) C:\Users\makaishi>coda install matplotlib

(keras-env) C:\Users\makaishi>coda install jupyter

(keras-env) C:\Users\makaishi>coda install tensorflow

(keras-env) C:\Users\makaishi>coda install keras

Anaconda Navigatorの起動

WindowsメニューからAnaconda3配下の"Anaconda Navigator"を起動します。

下の画面が表示されたら、
①Application onのドロップダウンを"keras-env"に変更

②Jupyter Notebookの下の「Launch」ボタンをクリック
します。

スクリーンショット 2019-03-27 17.51.04.png

Notebookの読み込み

これで、Jupyter Notebookが起動されるので、あとはいつものようにipynbファイルを読み込んでnotebookファイルを実行します。
下の図のようにKerasのライブラリが使えるようになっているはずです。

スクリーンショット 2019-03-27 19.13.23.png

Macの場合

Macの場合は普通にターミナルを開いて以下のコマンドを実行します。

$ conda create -n keras-env python=3.6

$ conda activate keras-env

正しく実行されると、プロンプトが以下のような表示に変わります。

(keras_env) xxxxx:~ makaishi$

Activate後は、Windowsの場合と同じになります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Windows/MacのJupyter NotebookからKerasが使えるようにする

はじめに

わかってみると同じような記事はいろいろあったのですが、とりあえず現時点で表記のことを行うための手順をメモします。

そもそもなぜこの手順が必要なのか

Jupyter Notebookの前提になっているanacondaには不足モジュールの追加導入の機能があり、本来はこの機能を使うだけで簡単にKerasも使えるようになるはずです。
しかし、現在

anacondaで導入されるpython: version 3.7

kerasの前提のpython: version 3.6

となってしまっており、単純な追加導入ではkerasが導入できないのです。

対応手段

anacondaには、仮想環境追加機能があり、ベースとまったく別のpython環境を作ることができます。この方法を使って初期導入環境とは別のpython 3.6環境を別途作ることになります。

前提

"Anaconda 2018.12 for Windows(Mac) Installer"をダウンロード、インストールした直後の状態を前提とします。この本体の導入手順に関しては他に手順書がいろいろあるので省略します。

手順 (Windowsの場合)

それでは、Windowsの場合の具体的な手順を説明します。

anaconda promptの起動

最初に行うのは、anaconda promptの起動です。
スクリーンショット 2019-03-27 17.00.22.png

図のようにWindowsメニューからAnaconda3配下の"Anaconda Prompt"を選択します。

conda コマンドの実行

プロンプトから下記のコマンドを順に実行します。
Yes / Noの確認のプロンプトが表示されたらすべてYで答えるようにします。

仮想環境 keras-env の作成

(base) C:\Users\makaishi> conda create -n keras-env python=3.6

仮想環境 keras-env の活性化

(base) C:\Users\makaishi>activate keras-env

仮想環境に追加モジュールの導入

(keras-env) C:\Users\makaishi>conda install matplotlib

(keras-env) C:\Users\makaishi>conda install scikit-learn

(keras-env) C:\Users\makaishi>conda install jupyter

(keras-env) C:\Users\makaishi>conda install tensorflow

(keras-env) C:\Users\makaishi>codna install keras

Anaconda Navigatorの起動

WindowsメニューからAnaconda3配下の"Anaconda Navigator"を起動します。

下の画面が表示されたら、
①Application onのドロップダウンを"keras-env"に変更

②Jupyter Notebookの下の「Launch」ボタンをクリック
します。

スクリーンショット 2019-03-27 17.51.04.png

Notebookの読み込み

これで、Jupyter Notebookが起動されるので、あとはいつものようにipynbファイルを読み込んでnotebookファイルを実行します。
下の図のようにKerasのライブラリが使えるようになっているはずです。

スクリーンショット 2019-03-27 19.13.23.png

手順(Macの場合)

Macの場合は普通にターミナルを開いて以下のコマンドを実行します。

$ conda create -n keras-env python=3.6

$ conda activate keras-env

正しく実行されると、プロンプトが以下のような表示に変わります。

(keras_env) xxxxx:~ makaishi$

Activate後の手順は、Windowsの場合と同じになります。

補足 Macの場合の問題回避策

事前導入済みソフトの状況などに依存するのだと思いますが、私のPC(Mac)では、上の手順だけでKerasのコードがうまく動きませんでした。(Keras自体は動いているようにみえるが、その後でmatplotlibでグラフ描画しようとするとリセットされてしまう)
いろいろ調べて、下記のコマンドをNotebookの冒頭に入れると、問題が回避できることがわかりました。

# Macの問題回避
import os
import platform
if platform.system() == 'Darwin':
    os.environ['KMP_DUPLICATE_LIB_OK']='True'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

YAD2U Unity&C#編

YAD2U C#編

yet another deepmimic to unity !

Other References

対象

  • Unity(Mocapデータ,Kinematic tree,Animation)
  • C#(物理エンジン,幾何学計算)
  • mlagent(強化学習SDK)

を使い慣れている方

略語

Additional Task Objective=ATO(完全に非公認です)
Immitation Objective =IO(上に同じ)

概要

YAD2U yet another deepmimic to unity deepmimicの理論を用いた非公認プロジェクトです.

Unity Editor側

Scene内のParentから順に説明していきます.

Brainの設定

Stateを以下を参考にvector observationにより設定
https://qiita.com/tanakataiki/items/94c7778341a40438cc99#state
C#での実装は以下

https://github.com/tanakataiki/YAD2U/blob/01cf99dc03ada0a4db80263d3899a403a321101c/UnitySDK/Assets/ML-Agents/Examples/OneArmer/Scripts/OneArmerAgent.cs#L144

両手首は両前腕に固定しているため,Observationは冗長なので,はじきました.
https://github.com/tanakataiki/YAD2U/blob/01cf99dc03ada0a4db80263d3899a403a321101c/UnitySDK/Assets/ML-Agents/Examples/OneArmer/Scripts/OneArmerAgent.cs#L177
Actionは各関節のTargetRotationとしました.

ETの実装

OnCollisionEnterの時にAgentをDoneして,終了します.その場合Penaltyとして,SetRewardを0にします.
ETは歩く場合足以外のCollisionに対して,ArmerAgentを動かす際はいりませんね.

Mimic Pairについて

AgentとReference Record(IOの時) Goal(ATOの時今回はStrike)のセットになるように作成します.

editRecording.PNG

これをInitialize Academy時に複数Instanciateすると並列分散学習ができるはず!

Agentの作成

作成したAgent赤いのはMaterialエラーです..なるべくMocapのアセットに近い体形にしました.
deepmimicagent.PNG

Agentの設定

Massを以下参考に設定
https://qiita.com/tanakataiki/items/94c7778341a40438cc99#body-parts-info
すべてKinematicsはFalse

Referenceの設定

isKinematicはTrue
CollisionもOff
AnimationのKinematicTreeの中にそれぞれのPartsを入れ込む.

Mimicの概要

https://qiita.com/tanakataiki/items/94c7778341a40438cc99#immitation-objective

ここに実装しておきました.
https://github.com/tanakataiki/YAD2U/blob/master/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/Mimic.cs

Recordの実装

ここに実装しておきました.
MocapDataや,自分で作成した,ImmitationしたいMotionをRecordし,学習時に読み込むことで,ReferenceMotionを再現することができます.
https://github.com/tanakataiki/YAD2U/blob/master/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/Recorder.cs

RSIの実装

RSIは今回TaskObjectiveも加味して,半分より前の状態すなわちArmerAgentではボールに触りに行く状態から始めています.
https://github.com/tanakataiki/YAD2U/blob/01cf99dc03ada0a4db80263d3899a403a321101c/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/Recorder.cs#L115

Strikeの実装

https://qiita.com/tanakataiki/items/94c7778341a40438cc99#task-objetive

ここに実装しておきました.
https://github.com/tanakataiki/YAD2U/blob/master/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/Strike.cs

Skill Selector UIの実装

selector.PNG

こんな感じでスキルごとのボタンを用意しておきました

つぶやき

うまいなぁと思った点は,Strikeって1度Strikeできたかどうか判定するのに,LSTMやRNNなど,時系列を使うこともできるんだけど,ものすごく複雑になるので,今回はHitしたら,以降Stikeによる報酬は1に設定することで,それ以上無駄なStrikeをしなくなる.(逆にこのようなフラグを設定しないと,いつまでも触り続ける)

微妙だなぁと思った点は,Targetでかいし,芯をとらえていない.
まあ,ただ,芯をとらえるMotivationはImmitationに比べると,あまり大きく無くて,指示通りのこと以上はしてくれない.
taskObj.PNG

確かに,Targetの距離からEndEffector(ここでは右足)が近づけばRewardはExpに比例して(表現あってる?)大きくなるけど,一定の範囲内に来れば1,になるので,Rewardの7割を占めるImmitationを優先し,残り3割のStrike判定ぎりぎりのところを狙って蹴るのはRewardを最大にするうえで,重要で,まあある意味賢い
differenceBetweenReference&Agent.PNG

TaskのRewardの割合を大きくすると,Immitationしなくなるため,やっぱり暴れる...以下はイメージです...
walker.PNG

ここら辺の感覚は実装してみるとわかる.

筆者が頑張って追実装していた去年の9月ごろにはDeepmimicのOpenなRepositoryはなかったので,お,これは作るしか!とか思ってたんだけど,今となってはコードはGithubにあるし,詳細が見放題(HyperParameter論文と違くねとか結構思ったけど,試行錯誤の上なのかなあ.)
https://github.com/xbpeng/DeepMimic

公式のDeepmimic(windows版)は依存環境が多く,環境構築が鬼めんどいので,結局途中であきらめた.誰か環境構築の記事書いて~~

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む