在unity中创建python机器学习环境
生活随笔
收集整理的這篇文章主要介紹了
在unity中创建python机器学习环境
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# 創建一個新的學習環境
本教程將介紹創建unity環境的過程
unity環境是使用unity引擎來訓練增強學習代理器的應用
設置unity項目 1. 打開一個項目導入unity機器學習包, 或者新建一個項目重新導入 增強學習 接口包:??
?* [ML-Agents package without TensorflowSharp](https://s3.amazonaws.com/unity-agents/ML-AgentsNoPlugin.unitypackage)?
?* [ML-Agents package with TensorflowSharp](https://s3.amazonaws.com/unity-agents/ML-AgentsWithPlugin.unitypackage)? 2. 重命名 `TemplateAcademy.cs` (包括類名) :
所有 Template 文件 都在 `Assets -> Template -> Scripts`里. 通常命名方式為 `YourNameAcademy`. 3. 把 `YourNameAcademy.cs` 拖到一個新的對象上 (`Unity` -> `GameObject` -> `Create Empty`)
同時重命名這個對象 `YourNameAcademy`.? `YourNameAcademy` 會用來控制所有環境的邏輯,
確保附加的對象是一個留在場景中,不管環境重置,或其他環境行為 4. 把 `Brain.cs` 拖到一個新的對象上并重命名 `YourNameBrain1`.
把對象作為 `YourNameAcademy` 的子對象
注意 你可以有多個 brains 在 Academy 下但所有brain不同名 5. 禁用窗口對話框和屏幕分辨率
??? 1.`Edit` -> `Project Settings` -> `Player` -> `Resolution and Presentation`.
??? 2. 設置 `Display Resolution Dialogue` 為 `Disabled`.
??? 3.勾選`Run In Background`.
??? 4. 點擊 `Splash Image`.
??? 5. 取消 `Show Splash Screen` (Unity Pro only) 6. 如果你要在Unity中使用Tensorflow Sharp, 你必須:
?1. 確保你使用Unity 2017.1以上版本.
?2. 確保你已經加載了TensorflowSharp. 下載地址(https://s3.amazonaws.com/unity-agents/TFSharpPlugin.unitypackage).
?3. `Edit` -> `Project Settings` -> `Player`
?4. 對于你選擇的平臺(**`PC, Mac and Linux Standalone`**, **`iOS`** 或者 **`Android`**):??
??1. `Other Settings`.
??2. 選擇 `Scripting Runtime Version`為`Experimental (.NET 4.6 Equivalent)`
??3. 在`Scripting Defined Symbols`, 添加字符`ENABLE_TENSORFLOW`
?5. 重啟unity 操作`YourNameAcademy` 1. 點擊對象**`YourNameAcademy`**. 2. 在inspector面板, 可以設置academy一下內容:
?* **`Max Steps`**每一訓練集的最大長度(如果您不希望環境在某一時間后重置),則設置為0。
?* **`Wait Time`** 在測試環境中運行時的步驟之間的實時性。僅當使用步驟發生在` update() `。
?* **`Frames To Skip`** 在步驟間跳過的幀數(或物理更新)。代理器會在每一幀都調用但是行為只會在每步中出現.
?* **`Training Configuration`** 和 **`Inference Configuration`** 第一個定義了引擎在訓練時的配置,第二個定義在測試/推理時間. 當參數`train_model` 設置為True時訓練模式只能為外部訓練 . 可調參數如下:
??? * `Width`和`Height` 對應的寬度和高度,窗口的像素(必須大于0). 通常在訓練期間將其設置為小尺寸,而在推理過程中用于可視化的更大尺寸。
??? * `Quality Level` 確定如何執行渲染. 通常在訓練過程中設置為小值,在推理過程中為了可視化價使用高值.
??? * `Time Scale` 物理加速. 如果環境使用的物理計算, 訓練中提高這個值, 在推理中設置為 `1.0f`. 否則設置為 `1.0f`.
??? * `Target Frame Rate` 幀渲染頻率. 如果環境使用觀察, 在訓練中提高這個值, 推理中設置為`60`. 如果沒有使用觀察, 訓練中設置為 `1`
?* **`Default Reset Parameters`** 在重置時你可以設置默認配置. 字符會映射為浮點, 你能在 academy中調用 `resetParameters["YourDefaultParameter"]` 3. 在 **`InitializeAcademy()`**中, 你可以定義 Academy的初始化. 請注意,該命令在訓練會話開始時只運行一次. 3. 在 **`AcademyStep()`**中, 定義環境邏輯的每一步. 使用這個函數去修改環境中的代理器. 4. 在 **`AcademyReset()`**中, 每新訓練集重置. 它應該包含對于特定環境的代碼用來設置環境. 注意`AcademyReset()` 訓練會話開始時 調用 用來確保第一個集和其他一樣. ## 執行`YourNameBrain`
每個在academy下的brain : 1. 點擊`YourNameBrain` 2. 在inspector面板中, 你可以修改**`Brain Parameters`**
??? * `State Size` 提供給代理器的變量數 (s).**public override List<float> CollectState()里的變量
??? * `Action Size` 每個代理采取的可能操作數 .**public override void AgentStep(float[] act)里接收act的變量
??? * `Memory Size` 代理器記住每一步的浮動數.
??? * `Camera Resolutions` 包含分辨率參數的可伸縮長度列表:`height`和`width`。 .
?如果你想攝像機輸出為黑白勾選 `Black And White` .
??? * `Action Descriptions` 用人類可讀的語言描述每個可用動作的意思的列表.
??? * `State Space Type` 和 `Action Space Type`. 同樣`discrete`或者`continuous`.
??????? * `discrete` 對應的行為為 `int`.
??????? * `continuous` 對應的行為為 `float`.
?
3. 如果你想運行時收集數據, 勾選 **`Collect Data`**. 這個方法中, 狀態和行動通過大腦將保存在文件夾`saved_plays` 4. 你可以選擇 `YourNameBrain` 的類型. 一下四個可選項:
?* `External` : 如果你想調用python,環境中至少有一個外部模式
?* `Player` : 手動控制你的代理器. 如果行為空間是離散的, 必須將輸入鍵映射到相應的整數值. 如果行為空間是連續的, 你必須映射輸入鍵相應指標和浮點值 .
?* `Heuristic` : 你可以讓你的大腦自動對觀察結果和狀態做預設好的反應. 你需要拖一個 `Decision` 腳本到`YourNameBrain`. 創建自定義反應, 你必須 :
?? *? 重命名 `TemplateDecision.cs` (還有類名) 你想要的新反應的名字. 約定的命名方式為 `YourNameDecision`.
?? *? 執行 `Decide`: 給定一個代理的狀態、觀察和記憶,這個函數必須返回一個與代理器所采取的操作相對應的浮動數組. 如果行動空間為離散, 這個數組為 1.
?? *? 隨意項, 執行 `MakeMemory`: 給定一個代理的狀態、觀察和記憶,這個函數必須返回一個與代理的新記憶相對應的浮動數組.
?* `Internal` : 注意這個選項你必須有 Tensorflow Sharp 設置. 下面是必須完成的地方:
?? *? `Graph Model` : 這個必須為 `bytes`文件對應已經訓練好的Tensorflow 圖. (你必須先把二進制文件拖進unity,再把二進制文件拖到inspector)
?? *? `Graph Scope` : 當你訓練你的tensorflow 模型時設置了一個范圍, 所有你的占位符(placeholder)名稱將有前綴. 你必須在此指定前綴.
?? *? `Batch Size Node Name` : 如果批處理大小是圖的輸入之一,則必須在占位符中指定名稱. brain將自動使批量大小等于與brain相連的代理數量.
?? *? `State Node Name` : 如果你的圖形使用狀態作為輸入,則必須在此占位符中指定名稱.
?? *? `Recurrent Input Node Name` : 如果你的圖形使用循環輸入/記憶作為輸入,并輸出新的循環輸入/記憶,則必須在輸入占位符中指定名稱.
?? *? `Recurrent Output Node Name` : 如果你的圖形使用循環輸入/記憶作為輸入,并輸出新的循環輸入/記憶,則必須在輸入占位符中指定名稱.
?? * `Observation Placeholder Name` : 如果你的圖使用觀察作為輸入,你必須在此處指定。注意,觀測值等于brain參數中“Camera Resolutions”的長度
?? * `Action Node Name` : 指定與圖中的brain動作相對應的占位符名稱. 如果行動空間是連續的, 輸出一定為`Action Space Size`一個浮點長度方向的張量(tensor) , 如果行動空間為離散, 輸出必須為一個整形為1長度的張量.
?? * `Graph Placeholder` : 如果你的圖需要額外的固定輸入(例如:噪聲水平),你可以在這里指定它們. 注意在你的圖里, 這些必須與int的一維張量或大小為1的浮點對應.
???? * `Name` : 對應占位符的名字.
???? * `Value Type` : 整型和浮點.
???? * `Min Value`和'Max Value' : 指定最大最小值供給(包含最值) 占位符選擇. 該值將在每個步驟的均勻分布中進行采樣. 如果你想讓這個值固定 同時設置 `Min Value` 和`Max Value` 為同樣的值.
???
## 執行`YourNameAgent` 1. 重命名`TemplateAgent.cs`. 約定的命名為`YourNameAgent`. 2.把 `YourNameAgent.cs` 代表代理器的對象上.
(Example: 如果你想做自動駕駛, 把 `YourNameAgent.cs` 掛到看上去像車的對象上) 3. 在你代理器inspector面板, 把代理器對應的brain拖進 `Brain` 框.
注意,同一個brain可以有不同的代理器.
如果你通過腳本的方式想給一個代理器一個brain或者改變它的brain, 使用`ChangeBrain()`. 4. 在你代理器inspector面板, 你可以指定攝像頭, 你的代理器可以用來觀察. 這么做, 拖 `Observations` 框. 注意 如果你想要一個攝像機去單獨移動你的代理器, 你可以設置你的攝像頭作為代理器的子對象 5. 如果 `Reset On Done` 被勾選, `Reset()` 會在代理器完成時被調用.否則, `AgentOnDone()` 會被調用. 注意如果`Reset On Done`沒有勾選, 代理器會被保持 "done" 直到Academy重置. 這就意味著它不會在環境中采取任何行為. 6. 執行`YourNameAgent.cs` :
?* `InitializeAgent()` : 這個方法用來初始化你的代理器. 代理器創建時被調用.
?* `CollectState()` : 必須返回與代理器所在的狀態相對應的浮動列表. 如果狀態空間類型為離散, 返回長度1的列表,其中包含與您的狀態等價的浮點數
?* `AgentStep()` : 這個方法每幀調用, 你必須定義你的代理器會輸入的行為. 你必須定義 獎勵 和 代理器是否完成.這樣做, 修改代理器中的 `reward` 和`done`.
?* `AgentReset()` : 這個函數在開始時調用, 當Academy重置和當代理器完成時 ( `Reset On Done` 被勾選).
?* `AgentOnDone()` : 如果 `Reset On Done` 沒有被勾選, 這個函數會在代理器完成時被調用. `Reset()` 只會在Academy重置時調用
如果你想腳本調用代理器, 我們建議你保存代理器為預制件和在每一步或者重置時實例化. 如果你想這么做, 你可以使用`GiveBrain(brain)`來擁有代理器.
你也能用 `RemoveBrain()` 從brain中取消 # 定義反饋函數
這個獎勵函數用來獎勵或者懲罰代理器發生行為.
參數調整的參考*****
* 獎勵
??? * 得分
??? * 還活著
??? * 成功消滅敵人
??? * 獲得HP
??? * 上升階級
* 懲罰
??? * 受傷
??? * 下跌階級
??? * 代理器死亡 小的懲罰同樣被在每一步以 最佳代理行為是盡可能快地完成一訓練集 注意 獎勵在每一步中都重置為0, 你必須添加獎勵 (`reward += rewardIncrement`). 如果你在Academy中使用`skipFrame` 和設置你的獎勵不是遞增的, 因為獎勵每步而不是每幀你會丟失信息. ## Agent Monitor
* 你可以添加 `AgentMonitor.cs` t每個代理器中 `YourNameAgent.cs`. 在inspector面板, 你可以看到:
? * `Fixed Position` : 如果被勾選, 檢測器 會一直在屏幕的左上角. 注意你只能使用一個檢測器,否則左上角會重合.
? * `Vertical Offset`:如果`Fixed Position`沒有被勾選, 檢測器會一直跟著代理器. 使用`Vertical Offset`來決定檢測器離代理器多遠
? * `Display Brain Name` :? brain名,如果有同名的代理器在不同的brain那么這個選項就很有用
? * `Display Brain Type` : 展示brain的類型.
? * `Display FrameCount` :? 從代理器開始到現在的幀數.
? * `Display Current Reward`: 實時獲取代理器獲得的獎勵數
? * `Display Max Reward` : 從訓練會話開始,獲得的最大獎勵.
? * `Display State` : 代理器的狀態.
? * `Display Action` : 代理器的行為. 如果從外部brain中傳入值, 那么這個值會在檢測器上用條狀來展示 (綠色代表正數 /紅色代表負數).
這個條狀最大值默認為1
但如果代理器的值大于這個值,那么代理器的值會被設為最大值
請關注我的微信公眾號獲取有關unity機器學習的推送:
unity環境是使用unity引擎來訓練增強學習代理器的應用
設置unity項目 1. 打開一個項目導入unity機器學習包, 或者新建一個項目重新導入 增強學習 接口包:??
?* [ML-Agents package without TensorflowSharp](https://s3.amazonaws.com/unity-agents/ML-AgentsNoPlugin.unitypackage)?
?* [ML-Agents package with TensorflowSharp](https://s3.amazonaws.com/unity-agents/ML-AgentsWithPlugin.unitypackage)? 2. 重命名 `TemplateAcademy.cs` (包括類名) :
所有 Template 文件 都在 `Assets -> Template -> Scripts`里. 通常命名方式為 `YourNameAcademy`. 3. 把 `YourNameAcademy.cs` 拖到一個新的對象上 (`Unity` -> `GameObject` -> `Create Empty`)
同時重命名這個對象 `YourNameAcademy`.? `YourNameAcademy` 會用來控制所有環境的邏輯,
確保附加的對象是一個留在場景中,不管環境重置,或其他環境行為 4. 把 `Brain.cs` 拖到一個新的對象上并重命名 `YourNameBrain1`.
把對象作為 `YourNameAcademy` 的子對象
注意 你可以有多個 brains 在 Academy 下但所有brain不同名 5. 禁用窗口對話框和屏幕分辨率
??? 1.`Edit` -> `Project Settings` -> `Player` -> `Resolution and Presentation`.
??? 2. 設置 `Display Resolution Dialogue` 為 `Disabled`.
??? 3.勾選`Run In Background`.
??? 4. 點擊 `Splash Image`.
??? 5. 取消 `Show Splash Screen` (Unity Pro only) 6. 如果你要在Unity中使用Tensorflow Sharp, 你必須:
?1. 確保你使用Unity 2017.1以上版本.
?2. 確保你已經加載了TensorflowSharp. 下載地址(https://s3.amazonaws.com/unity-agents/TFSharpPlugin.unitypackage).
?3. `Edit` -> `Project Settings` -> `Player`
?4. 對于你選擇的平臺(**`PC, Mac and Linux Standalone`**, **`iOS`** 或者 **`Android`**):??
??1. `Other Settings`.
??2. 選擇 `Scripting Runtime Version`為`Experimental (.NET 4.6 Equivalent)`
??3. 在`Scripting Defined Symbols`, 添加字符`ENABLE_TENSORFLOW`
?5. 重啟unity 操作`YourNameAcademy` 1. 點擊對象**`YourNameAcademy`**. 2. 在inspector面板, 可以設置academy一下內容:
?* **`Max Steps`**每一訓練集的最大長度(如果您不希望環境在某一時間后重置),則設置為0。
?* **`Wait Time`** 在測試環境中運行時的步驟之間的實時性。僅當使用步驟發生在` update() `。
?* **`Frames To Skip`** 在步驟間跳過的幀數(或物理更新)。代理器會在每一幀都調用但是行為只會在每步中出現.
?* **`Training Configuration`** 和 **`Inference Configuration`** 第一個定義了引擎在訓練時的配置,第二個定義在測試/推理時間. 當參數`train_model` 設置為True時訓練模式只能為外部訓練 . 可調參數如下:
??? * `Width`和`Height` 對應的寬度和高度,窗口的像素(必須大于0). 通常在訓練期間將其設置為小尺寸,而在推理過程中用于可視化的更大尺寸。
??? * `Quality Level` 確定如何執行渲染. 通常在訓練過程中設置為小值,在推理過程中為了可視化價使用高值.
??? * `Time Scale` 物理加速. 如果環境使用的物理計算, 訓練中提高這個值, 在推理中設置為 `1.0f`. 否則設置為 `1.0f`.
??? * `Target Frame Rate` 幀渲染頻率. 如果環境使用觀察, 在訓練中提高這個值, 推理中設置為`60`. 如果沒有使用觀察, 訓練中設置為 `1`
?* **`Default Reset Parameters`** 在重置時你可以設置默認配置. 字符會映射為浮點, 你能在 academy中調用 `resetParameters["YourDefaultParameter"]` 3. 在 **`InitializeAcademy()`**中, 你可以定義 Academy的初始化. 請注意,該命令在訓練會話開始時只運行一次. 3. 在 **`AcademyStep()`**中, 定義環境邏輯的每一步. 使用這個函數去修改環境中的代理器. 4. 在 **`AcademyReset()`**中, 每新訓練集重置. 它應該包含對于特定環境的代碼用來設置環境. 注意`AcademyReset()` 訓練會話開始時 調用 用來確保第一個集和其他一樣. ## 執行`YourNameBrain`
每個在academy下的brain : 1. 點擊`YourNameBrain` 2. 在inspector面板中, 你可以修改**`Brain Parameters`**
??? * `State Size` 提供給代理器的變量數 (s).**public override List<float> CollectState()里的變量
??? * `Action Size` 每個代理采取的可能操作數 .**public override void AgentStep(float[] act)里接收act的變量
??? * `Memory Size` 代理器記住每一步的浮動數.
??? * `Camera Resolutions` 包含分辨率參數的可伸縮長度列表:`height`和`width`。 .
?如果你想攝像機輸出為黑白勾選 `Black And White` .
??? * `Action Descriptions` 用人類可讀的語言描述每個可用動作的意思的列表.
??? * `State Space Type` 和 `Action Space Type`. 同樣`discrete`或者`continuous`.
??????? * `discrete` 對應的行為為 `int`.
??????? * `continuous` 對應的行為為 `float`.
?
3. 如果你想運行時收集數據, 勾選 **`Collect Data`**. 這個方法中, 狀態和行動通過大腦將保存在文件夾`saved_plays` 4. 你可以選擇 `YourNameBrain` 的類型. 一下四個可選項:
?* `External` : 如果你想調用python,環境中至少有一個外部模式
?* `Player` : 手動控制你的代理器. 如果行為空間是離散的, 必須將輸入鍵映射到相應的整數值. 如果行為空間是連續的, 你必須映射輸入鍵相應指標和浮點值 .
?* `Heuristic` : 你可以讓你的大腦自動對觀察結果和狀態做預設好的反應. 你需要拖一個 `Decision` 腳本到`YourNameBrain`. 創建自定義反應, 你必須 :
?? *? 重命名 `TemplateDecision.cs` (還有類名) 你想要的新反應的名字. 約定的命名方式為 `YourNameDecision`.
?? *? 執行 `Decide`: 給定一個代理的狀態、觀察和記憶,這個函數必須返回一個與代理器所采取的操作相對應的浮動數組. 如果行動空間為離散, 這個數組為 1.
?? *? 隨意項, 執行 `MakeMemory`: 給定一個代理的狀態、觀察和記憶,這個函數必須返回一個與代理的新記憶相對應的浮動數組.
?* `Internal` : 注意這個選項你必須有 Tensorflow Sharp 設置. 下面是必須完成的地方:
?? *? `Graph Model` : 這個必須為 `bytes`文件對應已經訓練好的Tensorflow 圖. (你必須先把二進制文件拖進unity,再把二進制文件拖到inspector)
?? *? `Graph Scope` : 當你訓練你的tensorflow 模型時設置了一個范圍, 所有你的占位符(placeholder)名稱將有前綴. 你必須在此指定前綴.
?? *? `Batch Size Node Name` : 如果批處理大小是圖的輸入之一,則必須在占位符中指定名稱. brain將自動使批量大小等于與brain相連的代理數量.
?? *? `State Node Name` : 如果你的圖形使用狀態作為輸入,則必須在此占位符中指定名稱.
?? *? `Recurrent Input Node Name` : 如果你的圖形使用循環輸入/記憶作為輸入,并輸出新的循環輸入/記憶,則必須在輸入占位符中指定名稱.
?? *? `Recurrent Output Node Name` : 如果你的圖形使用循環輸入/記憶作為輸入,并輸出新的循環輸入/記憶,則必須在輸入占位符中指定名稱.
?? * `Observation Placeholder Name` : 如果你的圖使用觀察作為輸入,你必須在此處指定。注意,觀測值等于brain參數中“Camera Resolutions”的長度
?? * `Action Node Name` : 指定與圖中的brain動作相對應的占位符名稱. 如果行動空間是連續的, 輸出一定為`Action Space Size`一個浮點長度方向的張量(tensor) , 如果行動空間為離散, 輸出必須為一個整形為1長度的張量.
?? * `Graph Placeholder` : 如果你的圖需要額外的固定輸入(例如:噪聲水平),你可以在這里指定它們. 注意在你的圖里, 這些必須與int的一維張量或大小為1的浮點對應.
???? * `Name` : 對應占位符的名字.
???? * `Value Type` : 整型和浮點.
???? * `Min Value`和'Max Value' : 指定最大最小值供給(包含最值) 占位符選擇. 該值將在每個步驟的均勻分布中進行采樣. 如果你想讓這個值固定 同時設置 `Min Value` 和`Max Value` 為同樣的值.
???
## 執行`YourNameAgent` 1. 重命名`TemplateAgent.cs`. 約定的命名為`YourNameAgent`. 2.把 `YourNameAgent.cs` 代表代理器的對象上.
(Example: 如果你想做自動駕駛, 把 `YourNameAgent.cs` 掛到看上去像車的對象上) 3. 在你代理器inspector面板, 把代理器對應的brain拖進 `Brain` 框.
注意,同一個brain可以有不同的代理器.
如果你通過腳本的方式想給一個代理器一個brain或者改變它的brain, 使用`ChangeBrain()`. 4. 在你代理器inspector面板, 你可以指定攝像頭, 你的代理器可以用來觀察. 這么做, 拖 `Observations` 框. 注意 如果你想要一個攝像機去單獨移動你的代理器, 你可以設置你的攝像頭作為代理器的子對象 5. 如果 `Reset On Done` 被勾選, `Reset()` 會在代理器完成時被調用.否則, `AgentOnDone()` 會被調用. 注意如果`Reset On Done`沒有勾選, 代理器會被保持 "done" 直到Academy重置. 這就意味著它不會在環境中采取任何行為. 6. 執行`YourNameAgent.cs` :
?* `InitializeAgent()` : 這個方法用來初始化你的代理器. 代理器創建時被調用.
?* `CollectState()` : 必須返回與代理器所在的狀態相對應的浮動列表. 如果狀態空間類型為離散, 返回長度1的列表,其中包含與您的狀態等價的浮點數
?* `AgentStep()` : 這個方法每幀調用, 你必須定義你的代理器會輸入的行為. 你必須定義 獎勵 和 代理器是否完成.這樣做, 修改代理器中的 `reward` 和`done`.
?* `AgentReset()` : 這個函數在開始時調用, 當Academy重置和當代理器完成時 ( `Reset On Done` 被勾選).
?* `AgentOnDone()` : 如果 `Reset On Done` 沒有被勾選, 這個函數會在代理器完成時被調用. `Reset()` 只會在Academy重置時調用
如果你想腳本調用代理器, 我們建議你保存代理器為預制件和在每一步或者重置時實例化. 如果你想這么做, 你可以使用`GiveBrain(brain)`來擁有代理器.
你也能用 `RemoveBrain()` 從brain中取消 # 定義反饋函數
這個獎勵函數用來獎勵或者懲罰代理器發生行為.
參數調整的參考*****
* 獎勵
??? * 得分
??? * 還活著
??? * 成功消滅敵人
??? * 獲得HP
??? * 上升階級
* 懲罰
??? * 受傷
??? * 下跌階級
??? * 代理器死亡 小的懲罰同樣被在每一步以 最佳代理行為是盡可能快地完成一訓練集 注意 獎勵在每一步中都重置為0, 你必須添加獎勵 (`reward += rewardIncrement`). 如果你在Academy中使用`skipFrame` 和設置你的獎勵不是遞增的, 因為獎勵每步而不是每幀你會丟失信息. ## Agent Monitor
* 你可以添加 `AgentMonitor.cs` t每個代理器中 `YourNameAgent.cs`. 在inspector面板, 你可以看到:
? * `Fixed Position` : 如果被勾選, 檢測器 會一直在屏幕的左上角. 注意你只能使用一個檢測器,否則左上角會重合.
? * `Vertical Offset`:如果`Fixed Position`沒有被勾選, 檢測器會一直跟著代理器. 使用`Vertical Offset`來決定檢測器離代理器多遠
? * `Display Brain Name` :? brain名,如果有同名的代理器在不同的brain那么這個選項就很有用
? * `Display Brain Type` : 展示brain的類型.
? * `Display FrameCount` :? 從代理器開始到現在的幀數.
? * `Display Current Reward`: 實時獲取代理器獲得的獎勵數
? * `Display Max Reward` : 從訓練會話開始,獲得的最大獎勵.
? * `Display State` : 代理器的狀態.
? * `Display Action` : 代理器的行為. 如果從外部brain中傳入值, 那么這個值會在檢測器上用條狀來展示 (綠色代表正數 /紅色代表負數).
這個條狀最大值默認為1
但如果代理器的值大于這個值,那么代理器的值會被設為最大值
請關注我的微信公眾號獲取有關unity機器學習的推送:
總結
以上是生活随笔為你收集整理的在unity中创建python机器学习环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 讯时后台编辑器在IE8下无法打开窗口的解
- 下一篇: python人工智能方向面试准备_关于机