大家好
最近稍微理解 unity 3D ml-agents 的運作了
想說做一個整理
希望對有需要的人有幫助
先從輸出數值 Discrete Actions 開始
Discrete Actions 算是分類器
一個分類他只會吐出一個數字做輸入
可以用於動作決定
例如模擬玩家操作這樣
按下去的動作就是有或者無
public override void OnActionReceived(ActionBuffers actionBuffers) { // 取得的是int整數-動作類型 // 數量對應 branch size // 假設 branch size 有兩個 // 則會有2個分類 // 然後2個分類中會有對應的分類int var action1 = actionBuffers.DiscreteActions[0]; // 2 分類 var action2 = actionBuffers.DiscreteActions[1]; // 5 分類 }
再來是輸出數值 Continuous Actions
Continuous Actions 類似於輸出浮點數字
常常用於微調,跟力度有關的動作
例如 速度 或是 位置
public override void OnActionReceived(ActionBuffers actionBuffers) { // Continuous Actions 對應的是浮點輸出 // 輸出float參數 // 數量由 Continuous Actions 設定-設定3就會有3個 float val_0 = actionBuffers.ContinuousActions[0]; float val_1 = actionBuffers.ContinuousActions[1]; float val_3 = actionBuffers.ContinuousActions[2]; }
接著是輸入數值 space size
public override void CollectObservations(VectorSensor sensor) { // 輸入特徵參數 數量由 space size 決定 sensor.AddObservation(gameObject.transform.position.z); sensor.AddObservation(gameObject.transform.position.x); }
經過這幾天研究unity 3D ml-agents發現
他預設是無法調整模型
跟在python做深度學習不太一樣
也就是在 unity 3D ml-agents 我們只管輸入輸出而已
而且預設就是用 reinforcement learning
就是針對反饋來學習的
然後可以設定一定步數之後再進行反饋
給大家參考囉
留言板
歡迎留下建議與分享!希望一起交流!感恩!