एक्सपीरियंस रिप्ले बफ़र
अब आप Experience Replay के लिए आवश्यक डेटा स्ट्रक्चर बनाएँगे, जिससे आपका एजेंट कहीं अधिक कुशलता से सीख सकेगा.
इस रिप्ले बफ़र को दो ऑपरेशन सपोर्ट करने चाहिए:
- भविष्य में सैंपलिंग के लिए अपनी मेमोरी में एक्सपीरियंस स्टोर करना.
- अपनी मेमोरी से बीते एक्सपीरियंस का रैंडम सैंपल लिया हुआ बैच "रीप्ले" करना.
क्योंकि रिप्ले बफ़र से निकला डेटा एक न्यूरल नेटवर्क में फीड किया जाएगा, सुविधा के लिए बफ़र को torch Tensors लौटाने चाहिए.
torch और random मॉड्यूल तथा deque क्लास आपके अभ्यास वातावरण में इम्पोर्ट किए जा चुके हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Deep Reinforcement Learning
अभ्यास निर्देश
ReplayBufferकेpush()मेथड को पूरा करें,experience_tupleको बफ़र मेमोरी में append करके.sample()मेथड में,self.memoryसे आकारbatch_sizeका रैंडम सैंपल निकालें.- फिर
sample()में, सैंपल शुरुआत में ट्यूपल्स की एक सूची के रूप में मिलता है; सुनिश्चित करें कि इसे सूचियों के एक ट्यूपल में बदला जाए. actions_tensorको(batch_size)की बजाय(batch_size, 1)शेप में ट्रांसफॉर्म करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
class ReplayBuffer:
def __init__(self, capacity):
self.memory = deque([], maxlen=capacity)
def push(self, state, action, reward, next_state, done):
experience_tuple = (state, action, reward, next_state, done)
# Append experience_tuple to the memory buffer
self.memory.____
def __len__(self):
return len(self.memory)
def sample(self, batch_size):
# Draw a random sample of size batch_size
batch = ____(____, ____)
# Transform batch into a tuple of lists
states, actions, rewards, next_states, dones = ____
states_tensor = torch.tensor(states, dtype=torch.float32)
rewards_tensor = torch.tensor(rewards, dtype=torch.float32)
next_states_tensor = torch.tensor(next_states, dtype=torch.float32)
dones_tensor = torch.tensor(dones, dtype=torch.float32)
# Ensure actions_tensor has shape (batch_size, 1)
actions_tensor = torch.tensor(actions, dtype=torch.long).____
return states_tensor, actions_tensor, rewards_tensor, next_states_tensor, dones_tensor