mirror of
https://github.com/wassname/ray.git
synced 2026-07-14 11:17:54 +08:00
ecb811c26e
* minimal apex checkin * cleanup dqn options * actor utils * Sun Feb 25 17:39:54 PST 2018 * update * compression refactor * fix * add test * fix models * Sun Feb 25 21:46:27 PST 2018 * Wed Feb 28 10:26:34 PST 2018 * Wed Feb 28 10:28:09 PST 2018 * Wed Feb 28 10:42:59 PST 2018 * refactor * Wed Feb 28 11:17:19 PST 2018 * Wed Feb 28 11:42:08 PST 2018 * Wed Feb 28 11:42:13 PST 2018 * Wed Feb 28 11:59:02 PST 2018 * Wed Feb 28 11:59:58 PST 2018 * Wed Feb 28 12:00:08 PST 2018 * Wed Feb 28 12:02:19 PST 2018 * Wed Feb 28 13:44:31 PST 2018 * Wed Feb 28 17:01:20 PST 2018 * Sat Mar 3 14:55:59 PST 2018 * make optimizer construction explicit * Sat Mar 3 18:23:08 PST 2018 * Sat Mar 3 18:24:28 PST 2018 * Sat Mar 3 18:49:28 PST 2018 * Sat Mar 3 18:50:42 PST 2018 * Sat Mar 3 18:56:10 PST 2018
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
from ray.rllib.models.catalog import ModelCatalog
|
|
from ray.rllib.optimizers import Evaluator
|
|
from ray.rllib.pg.policy import PGPolicy
|
|
from ray.rllib.utils.filter import NoFilter
|
|
from ray.rllib.utils.process_rollout import process_rollout
|
|
from ray.rllib.utils.sampler import SyncSampler
|
|
|
|
|
|
class PGEvaluator(Evaluator):
|
|
"""Evaluator for simple policy gradient."""
|
|
|
|
def __init__(self, registry, env_creator, config):
|
|
self.env = ModelCatalog.get_preprocessor_as_wrapper(
|
|
registry, env_creator(config["env_config"]), config["model"])
|
|
self.config = config
|
|
|
|
self.policy = PGPolicy(registry, self.env.observation_space,
|
|
self.env.action_space, config)
|
|
self.sampler = SyncSampler(
|
|
self.env, self.policy, NoFilter(),
|
|
config["batch_size"], horizon=config["horizon"])
|
|
|
|
def sample(self):
|
|
rollout = self.sampler.get_data()
|
|
samples = process_rollout(
|
|
rollout, NoFilter(),
|
|
gamma=self.config["gamma"], use_gae=False)
|
|
return samples
|
|
|
|
def get_completed_rollout_metrics(self):
|
|
"""Returns metrics on previously completed rollouts.
|
|
|
|
Calling this clears the queue of completed rollout metrics.
|
|
"""
|
|
return self.sampler.get_metrics()
|
|
|
|
def compute_gradients(self, samples):
|
|
""" Returns gradient w.r.t. samples."""
|
|
gradient, info = self.policy.compute_gradients(samples)
|
|
return gradient
|
|
|
|
def apply_gradients(self, grads):
|
|
"""Applies gradients to evaluator weights."""
|
|
self.policy.apply_gradients(grads)
|
|
|
|
def get_weights(self):
|
|
"""Returns model weights."""
|
|
return self.policy.get_weights()
|
|
|
|
def set_weights(self, weights):
|
|
"""Sets model weights."""
|
|
return self.policy.set_weights(weights)
|