සාමාන්යකරණයකළ වාසි ඇස්තමේන්තුව (GAE)

මෙය PyTorch කඩදාසි සාමාන්යකරණය කරන ලද වාසි ඇස්තමේන්තු ක්රියාත්මක කිරීමකි .

එයභාවිතා කරන අත්හදා බැලීමක් ඔබට සොයාගත හැකිය මෙහි.

15import numpy as np
18class GAE:
19    def __init__(self, n_workers: int, worker_steps: int, gamma: float, lambda_: float):
20        self.lambda_ = lambda_
21        self.gamma = gamma
22        self.worker_steps = worker_steps
23        self.n_workers = n_workers

වාසිගණනය කරන්න

ඉහළ නැඹුරුව, අඩු විචලතාව, අපක්ෂපාතී වන අතර ඉහළ විචලතාව.

නැඹුරුවසහ විචලතාව සමතුලිත කිරීම සඳහා අපි බර තැබූ සාමාන්යයක් ගනිමු. මෙය සාමාන්යකරණය කළ වාසි ඇස්තමේන්තුව ලෙස හැඳින්වේ. අපි සකස් කළෙමු , මෙය පිරිසිදු ගණනය කිරීමක් ලබා දෙයි

25    def __call__(self, done: np.ndarray, rewards: np.ndarray, values: np.ndarray) -> np.ndarray:

වාසිවගුව

59        advantages = np.zeros((self.n_workers, self.worker_steps), dtype=np.float32)
60        last_advantage = 0

63        last_value = values[:, -1]
64
65        for t in reversed(range(self.worker_steps)):

පියවරෙන්පසු කථාංගය සම්පූර්ණ වුවහොත් වෙස් මුහුණ

67            mask = 1.0 - done[:, t]
68            last_value = last_value * mask
69            last_advantage = last_advantage * mask

71            delta = rewards[:, t] + self.gamma * last_value - values[:, t]

74            last_advantage = delta + self.gamma * self.lambda_ * last_advantage

අපිප්රතිලෝම අනුපිළිවෙලින් එකතු කරන බව සලකන්න. මගේආරම්භක කේතය ලැයිස්තුවකට එකතු වෙමින් තිබූ අතර පසුව එය ආපසු හැරවීමට මට අමතක විය. දෝෂය සොයා ගැනීමට මට පැය 4 සිට 5 දක්වා ගත විය. ආදර්ශ කාර්ය සාධනය ආරම්භක ලකුණු තුළ තරමක් වැඩි දියුණු විය, බොහෝ විට සාම්පල සමාන නිසා.

83            advantages[:, t] = last_advantage
84
85            last_value = values[:, t]
86
87        return advantages