INNER CODE UNIT · Python
_learn
rasbt/machine-learning-book · ch19/cartpole/main.py:75
def _learn(self, batch_samples):
batch_states, batch_targets = [], []
for transition in batch_samples:
s, a, r, next_s, done = transition
with torch.no_grad():
if done:
target = r
else:
pred = self.model(torch.tensor(next_s, dtype=torch.float32))[0]
target = r + self.gamma * pred.max()
target_all = self.model(torch.tensor(s, dtype=torch.float32))[0]
target_all[a] = target
batch_states.append(s.flatten())
batch_targets.append(target_all)
self._adjust_epsilon()