2017-03-07 23:42:44 -08:00
|
|
|
import unittest
|
|
|
|
import numpy as np
|
|
|
|
from numpy.testing import assert_allclose
|
|
|
|
|
2018-07-01 00:05:08 -07:00
|
|
|
from ray.rllib.agents.ppo.utils import flatten, concatenate
|
2019-05-16 22:12:07 -07:00
|
|
|
from ray.rllib.utils import try_import_tf
|
|
|
|
|
|
|
|
tf = try_import_tf()
|
2017-03-07 23:42:44 -08:00
|
|
|
|
2017-05-16 14:12:18 -07:00
|
|
|
|
2020-02-15 23:50:44 +01:00
|
|
|
# TODO(sven): Move to utils/tests/.
|
2017-03-07 23:42:44 -08:00
|
|
|
class UtilsTest(unittest.TestCase):
|
2017-07-13 14:53:57 -07:00
|
|
|
def testFlatten(self):
|
2018-07-19 15:30:36 -07:00
|
|
|
d = {
|
|
|
|
"s": np.array([[[1, -1], [2, -2]], [[3, -3], [4, -4]]]),
|
|
|
|
"a": np.array([[[5], [-5]], [[6], [-6]]])
|
|
|
|
}
|
2017-07-13 14:53:57 -07:00
|
|
|
flat = flatten(d.copy(), start=0, stop=2)
|
|
|
|
assert_allclose(d["s"][0][0][:], flat["s"][0][:])
|
|
|
|
assert_allclose(d["s"][0][1][:], flat["s"][1][:])
|
|
|
|
assert_allclose(d["s"][1][0][:], flat["s"][2][:])
|
|
|
|
assert_allclose(d["s"][1][1][:], flat["s"][3][:])
|
|
|
|
assert_allclose(d["a"][0][0], flat["a"][0])
|
|
|
|
assert_allclose(d["a"][0][1], flat["a"][1])
|
|
|
|
assert_allclose(d["a"][1][0], flat["a"][2])
|
|
|
|
assert_allclose(d["a"][1][1], flat["a"][3])
|
|
|
|
|
|
|
|
def testConcatenate(self):
|
|
|
|
d1 = {"s": np.array([0, 1]), "a": np.array([2, 3])}
|
|
|
|
d2 = {"s": np.array([4, 5]), "a": np.array([6, 7])}
|
|
|
|
d = concatenate([d1, d2])
|
|
|
|
assert_allclose(d["s"], np.array([0, 1, 4, 5]))
|
|
|
|
assert_allclose(d["a"], np.array([2, 3, 6, 7]))
|
|
|
|
|
|
|
|
D = concatenate([d])
|
|
|
|
assert_allclose(D["s"], np.array([0, 1, 4, 5]))
|
|
|
|
assert_allclose(D["a"], np.array([2, 3, 6, 7]))
|
2017-03-07 23:42:44 -08:00
|
|
|
|
2017-05-16 14:12:18 -07:00
|
|
|
|
2017-03-07 23:42:44 -08:00
|
|
|
if __name__ == "__main__":
|
2020-03-12 04:39:47 +01:00
|
|
|
import pytest
|
|
|
|
import sys
|
|
|
|
sys.exit(pytest.main(["-v", __file__]))
|