මෙය 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