[英]Understanding Gym Environment
這不是專門針對代碼故障排除,而是幫助我了解健身房環境。 我正在繼承gym.Env
來創建自己的環境,但我很難理解流程。 我瀏覽了文檔,但仍有一些不清楚的問題和概念。
我仍然有點模糊實際代理如何知道要控制什么動作? 我知道當你__init__
class時,你必須區分你的動作是離散的還是Box的,但是agent怎么知道他們控制的參數是什么?
在確定spaces.Box
命令的下限和上限時,它會告訴代理可以采取多大的步長? 例如,如果我的限制是 [-1,1] 他們可以在該域內實現任何大小?
我看到限制可以是[a,b], (-oo,a], [b,oo), (-oo,oo)
的限制,如果需要有我的觀察空間,我只是使用np.inf
命令?
如果您有任何文件可以推薦,那將不勝感激。
代理不知道該動作做了什么; 這就是強化學習的用武之地。澄清一下,每當您使用環境的step(action)
方法時,您都應該驗證該操作在環境中是否有效,並根據該操作返回獎勵和環境 state。
但是,如果您想在環境之外引用這些值,您可以這樣做並控制代理可以傳入的可用操作,如下所示:
import gym
env = gym.make('CartPole-v0')
actions = env.action_space.n #Number of discrete actions (2 for cartpole)
現在您可以創建一個 output 形狀為 2 的網絡 - 使用 softmax 激活並采用最大概率來確定代理要采取的行動。
這些空間用於內部環境驗證。 例如, observation_space = spaces.Box(low=-1.0, high=1.0, shape=(1,), dtype=np.float32)
表示代理將看到的任何變量的最大值為 1,最小值為-1。 因此,您還應該在step()
方法中使用這些來確保環境保持在這些范圍內。
此步驟對於使用您的環境的其他人來說非常重要,因為他們能夠一目了然地確定他們需要建立什么樣的網絡才能與您的環境進行交互。
是的。 np.inf
和-np.inf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.