Source code for akro

"""A library containing types of Spaces."""
import gym.spaces

try:
    import tensorflow as tf
except ImportError:  # pragma: no cover
    tf = False

try:
    import theano
except ImportError:  # pragma: no cover
    theano = False

from akro.box import Box
from akro.dict import Dict
from akro.discrete import Discrete
from akro.image import Image
from akro.space import Space
from akro.tuple import Tuple


[docs]def from_gym(space, is_image=False): """Convert a gym.space to an akro.space. Args: space(:obj:`gym.Space`): The Space object to convert. is_image(boolean): True if input is an image, False otherwise. This is False by default. Returns: akro.Space: The gym.Space object converted to an akro.Space object. """ if isinstance(space, gym.spaces.Box): if is_image: assert (space.low == 0).all() and (space.high == 255).all(), \ 'Low and high values must be 0 and 255 for an Image' return Image(space.shape) return Box(low=space.low, high=space.high) elif isinstance(space, gym.spaces.Dict): return Dict(space.spaces) elif isinstance(space, gym.spaces.Discrete): return Discrete(space.n) elif isinstance(space, gym.spaces.Tuple): return Tuple(list(map(from_gym, space.spaces))) else: # pragma: no cover raise TypeError
[docs]def concat(first, second): """Concatenate two spaces of the same type. Args: first (Space): The first space. second (Space): The second space. Returns: Space: A concatenated space. """ assert type(first) == type(second) return first.concat(second)
__all__ = [ 'Space', 'Box', 'Dict', 'Discrete', 'Image', 'Tuple', 'from_gym', 'tf', 'theano', 'concat' ]