在 tensorflow 代理中将状态存储为 list/integer 的好处
Benefit of storing state as a list/integer in tensorflow agents
在tensorflow agents环境教程(https://www.tensorflow.org/agents/tutorials/2_environments_tutorial)中,state是以整数形式存储的。当需要状态时,将其转换为numpy数组:
from tf_agents.environments import py_environment
import numpy as np
class CardGameEnv(py_environment.PyEnvironment):
def __init__(self):
self._state = 0
def _step(self,action):
state_array = np.array([self._state], dtype=np.int32)
return np.transition(state_array, reward=1.0, discount=0.9)
他们这样做有什么理由,而不是直接将状态存储为 numpy 数组?所以像这样:
from tf_agents.environments import py_environment
import numpy as np
class CardGameEnv(py_environment.PyEnvironment):
def __init__(self):
self._state = np.array([0], dtype=np.int32)
def _step(self,action):
return np.transition(self._state, reward=1.0, discount=0.9)
使用第二种方法有什么缺点吗?或者这是否同样有效?
为了方便起见,我通常不会将数据存储为 numpy 数组。我有时使用 pandas 数据框,有时使用列表,这取决于你如何更新当前状态。
然而,将状态存储为 numpy 数组总是更有效,因为在转换中返回观察时不需要将状态转换为 numpy 数组。
在tensorflow agents环境教程(https://www.tensorflow.org/agents/tutorials/2_environments_tutorial)中,state是以整数形式存储的。当需要状态时,将其转换为numpy数组:
from tf_agents.environments import py_environment
import numpy as np
class CardGameEnv(py_environment.PyEnvironment):
def __init__(self):
self._state = 0
def _step(self,action):
state_array = np.array([self._state], dtype=np.int32)
return np.transition(state_array, reward=1.0, discount=0.9)
他们这样做有什么理由,而不是直接将状态存储为 numpy 数组?所以像这样:
from tf_agents.environments import py_environment
import numpy as np
class CardGameEnv(py_environment.PyEnvironment):
def __init__(self):
self._state = np.array([0], dtype=np.int32)
def _step(self,action):
return np.transition(self._state, reward=1.0, discount=0.9)
使用第二种方法有什么缺点吗?或者这是否同样有效?
为了方便起见,我通常不会将数据存储为 numpy 数组。我有时使用 pandas 数据框,有时使用列表,这取决于你如何更新当前状态。
然而,将状态存储为 numpy 数组总是更有效,因为在转换中返回观察时不需要将状态转换为 numpy 数组。