BaşlayınÜcretsiz Başlayın

Deneyim tekrar oynatma tamponu

Artık Experience Replay'i destekleyecek veri yapısını oluşturacaksın; bu sayede ajanının çok daha verimli öğrenmesini sağlayacaksın.

Bu tekrar oynatma tamponu iki işlemi desteklemelidir:

  • Gelecekte örneklemek üzere deneyimleri belleğinde saklamak.
  • Belleğinden geçmiş deneyimlerden rastgele örneklenmiş bir kümeyi "yeniden oynatmak".

Tekrar oynatma tamponundan örneklenen veriler bir sinir ağına beslenerek kullanılacağı için, kolaylık olması adına tampon torch Tensor'ları döndürmelidir.

torch ve random modülleri ile deque sınıfı egzersiz ortamına aktarılmıştır.

Bu egzersiz

Python ile Deep Reinforcement Learning

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • ReplayBuffer'ın push() yöntemini, experience_tuple'ı tampon belleğe ekleyerek tamamla.
  • sample() yönteminde, self.memory içinden batch_size boyutunda rastgele bir örnek çek.
  • Yine sample() içinde, örnek başlangıçta tuple listesi olarak gelir; bunun liste tuple'ına dönüştürüldüğünden emin ol.
  • actions_tensor(batch_size) yerine (batch_size, 1) şekline dönüştür.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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
Kodu Düzenle ve Çalıştır