mirror of
https://github.com/wassname/ray.git
synced 2026-07-06 05:16:30 +08:00
c60ccbad46
* wip * Sat Dec 30 15:07:28 PST 2017 * log video * video doesn't work well * scenario integration * Sat Dec 30 17:30:22 PST 2017 * Sat Dec 30 17:31:05 PST 2017 * Sat Dec 30 17:31:32 PST 2017 * Sat Dec 30 17:32:16 PST 2017 * Sat Dec 30 17:34:11 PST 2017 * Sat Dec 30 17:34:50 PST 2017 * Sat Dec 30 17:35:34 PST 2017 * Sat Dec 30 17:38:49 PST 2017 * Sat Dec 30 17:40:39 PST 2017 * Sat Dec 30 17:43:00 PST 2017 * Sat Dec 30 17:43:04 PST 2017 * Sat Dec 30 17:45:56 PST 2017 * Sat Dec 30 17:46:26 PST 2017 * Sat Dec 30 17:47:02 PST 2017 * Sat Dec 30 17:51:53 PST 2017 * Sat Dec 30 17:52:54 PST 2017 * Sat Dec 30 17:56:43 PST 2017 * Sat Dec 30 18:27:07 PST 2017 * Sat Dec 30 18:27:52 PST 2017 * fix train * Sat Dec 30 18:41:51 PST 2017 * Sat Dec 30 18:54:11 PST 2017 * Sat Dec 30 18:56:22 PST 2017 * Sat Dec 30 19:05:04 PST 2017 * Sat Dec 30 19:05:23 PST 2017 * Sat Dec 30 19:11:53 PST 2017 * Sat Dec 30 19:14:31 PST 2017 * Sat Dec 30 19:16:20 PST 2017 * Sat Dec 30 19:18:05 PST 2017 * Sat Dec 30 19:18:45 PST 2017 * Sat Dec 30 19:22:44 PST 2017 * Sat Dec 30 19:24:41 PST 2017 * Sat Dec 30 19:26:57 PST 2017 * Sat Dec 30 19:40:37 PST 2017 * wip models * reward bonus * test prep * Sun Dec 31 18:45:25 PST 2017 * Sun Dec 31 18:58:28 PST 2017 * Sun Dec 31 18:59:34 PST 2017 * Sun Dec 31 19:03:33 PST 2017 * Sun Dec 31 19:05:05 PST 2017 * Sun Dec 31 19:09:25 PST 2017 * fix train * kill * add tuple preprocessor * Sun Dec 31 20:38:33 PST 2017 * Sun Dec 31 22:51:24 PST 2017 * Sun Dec 31 23:14:13 PST 2017 * Sun Dec 31 23:16:04 PST 2017 * Mon Jan 1 00:08:35 PST 2018 * Mon Jan 1 00:10:48 PST 2018 * Mon Jan 1 01:08:31 PST 2018 * Mon Jan 1 14:45:44 PST 2018 * Mon Jan 1 14:54:56 PST 2018 * Mon Jan 1 17:29:29 PST 2018 * switch to euclidean dists * Mon Jan 1 17:39:27 PST 2018 * Mon Jan 1 17:41:47 PST 2018 * Mon Jan 1 17:44:18 PST 2018 * Mon Jan 1 17:47:09 PST 2018 * Mon Jan 1 20:31:02 PST 2018 * Mon Jan 1 20:39:33 PST 2018 * Mon Jan 1 20:40:55 PST 2018 * Mon Jan 1 20:55:06 PST 2018 * Mon Jan 1 21:05:52 PST 2018 * fix env path * merge richards fix * fix hash * Mon Jan 1 22:04:00 PST 2018 * Mon Jan 1 22:25:29 PST 2018 * Mon Jan 1 22:30:42 PST 2018 * simplified reward function * add framestack * add env configs * simplify speed reward * Tue Jan 2 17:36:15 PST 2018 * Tue Jan 2 17:49:16 PST 2018 * Tue Jan 2 18:10:38 PST 2018 * add lane keeping simple mode * Tue Jan 2 20:25:26 PST 2018 * Tue Jan 2 20:30:30 PST 2018 * Tue Jan 2 20:33:26 PST 2018 * Tue Jan 2 20:41:42 PST 2018 * ppo lane keep * simplify discrete actions * Tue Jan 2 21:41:05 PST 2018 * Tue Jan 2 21:49:03 PST 2018 * Tue Jan 2 22:12:23 PST 2018 * Tue Jan 2 22:14:42 PST 2018 * Tue Jan 2 22:20:59 PST 2018 * Tue Jan 2 22:23:43 PST 2018 * Tue Jan 2 22:26:27 PST 2018 * Tue Jan 2 22:27:20 PST 2018 * Tue Jan 2 22:44:00 PST 2018 * Tue Jan 2 22:57:58 PST 2018 * Tue Jan 2 23:08:51 PST 2018 * Tue Jan 2 23:11:32 PST 2018 * update dqn reward * Thu Jan 4 12:29:40 PST 2018 * Thu Jan 4 12:30:26 PST 2018 * Update train_dqn.py * fix
95 lines
3.0 KiB
Python
95 lines
3.0 KiB
Python
import gym
|
|
import numpy as np
|
|
import tensorflow as tf
|
|
import unittest
|
|
from gym.spaces import Box, Discrete, Tuple
|
|
|
|
import ray
|
|
from ray.tune.registry import get_registry
|
|
|
|
from ray.rllib.models import ModelCatalog
|
|
from ray.rllib.models.model import Model
|
|
from ray.rllib.models.preprocessors import (
|
|
NoPreprocessor, OneHotPreprocessor, Preprocessor)
|
|
from ray.rllib.models.fcnet import FullyConnectedNetwork
|
|
from ray.rllib.models.visionnet import VisionNetwork
|
|
|
|
|
|
class CustomPreprocessor(Preprocessor):
|
|
pass
|
|
|
|
|
|
class CustomPreprocessor2(Preprocessor):
|
|
pass
|
|
|
|
|
|
class CustomModel(Model):
|
|
def _init(self, *args):
|
|
return None, None
|
|
|
|
|
|
class ModelCatalogTest(unittest.TestCase):
|
|
def tearDown(self):
|
|
ray.worker.cleanup()
|
|
|
|
def testGymPreprocessors(self):
|
|
p1 = ModelCatalog.get_preprocessor(
|
|
get_registry(), gym.make("CartPole-v0"))
|
|
self.assertEqual(type(p1), NoPreprocessor)
|
|
|
|
p2 = ModelCatalog.get_preprocessor(
|
|
get_registry(), gym.make("FrozenLake-v0"))
|
|
self.assertEqual(type(p2), OneHotPreprocessor)
|
|
|
|
def testTuplePreprocessor(self):
|
|
ray.init()
|
|
|
|
class TupleEnv(object):
|
|
def __init__(self):
|
|
self.observation_space = Tuple(
|
|
[Discrete(5), Box(0, 1, shape=(3,))])
|
|
p1 = ModelCatalog.get_preprocessor(
|
|
get_registry(), TupleEnv())
|
|
self.assertEqual(p1.shape, (8,))
|
|
self.assertEqual(
|
|
list(p1.transform((0, [1, 2, 3]))),
|
|
[float(x) for x in [1, 0, 0, 0, 0, 1, 2, 3]])
|
|
|
|
def testCustomPreprocessor(self):
|
|
ray.init()
|
|
ModelCatalog.register_custom_preprocessor("foo", CustomPreprocessor)
|
|
ModelCatalog.register_custom_preprocessor("bar", CustomPreprocessor2)
|
|
env = gym.make("CartPole-v0")
|
|
p1 = ModelCatalog.get_preprocessor(
|
|
get_registry(), env, {"custom_preprocessor": "foo"})
|
|
self.assertEqual(str(type(p1)), str(CustomPreprocessor))
|
|
p2 = ModelCatalog.get_preprocessor(
|
|
get_registry(), env, {"custom_preprocessor": "bar"})
|
|
self.assertEqual(str(type(p2)), str(CustomPreprocessor2))
|
|
p3 = ModelCatalog.get_preprocessor(get_registry(), env)
|
|
self.assertEqual(type(p3), NoPreprocessor)
|
|
|
|
def testDefaultModels(self):
|
|
ray.init()
|
|
|
|
with tf.variable_scope("test1"):
|
|
p1 = ModelCatalog.get_model(
|
|
get_registry(), np.zeros((10, 3), dtype=np.float32), 5)
|
|
self.assertEqual(type(p1), FullyConnectedNetwork)
|
|
|
|
with tf.variable_scope("test2"):
|
|
p2 = ModelCatalog.get_model(
|
|
get_registry(), np.zeros((10, 80, 80, 3), dtype=np.float32), 5)
|
|
self.assertEqual(type(p2), VisionNetwork)
|
|
|
|
def testCustomModel(self):
|
|
ray.init()
|
|
ModelCatalog.register_custom_model("foo", CustomModel)
|
|
p1 = ModelCatalog.get_model(
|
|
get_registry(), 1, 5, {"custom_model": "foo"})
|
|
self.assertEqual(str(type(p1)), str(CustomModel))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(verbosity=2)
|