Skip to content

Commit 7b365c6

Browse files
committed
adjusted example paths, moved some utils functions to util.py
1 parent f3db895 commit 7b365c6

11 files changed

Lines changed: 188 additions & 41 deletions

File tree

examples/lab_main.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,9 @@
2929
import deepmind_lab
3030
logger = logging.getLogger(__name__)
3131

32-
from tensorforce.config import Config
33-
from tensorforce.external.deepmind_lab import DeepMindLabEnvironment
34-
from tensorforce.util.experiment_util import build_preprocessing_stack
35-
from tensorforce.util.agent_util import create_agent
36-
from tensorforce.util.config_util import log_levels
32+
from tensorforce.config import Configuration
33+
from tensorforce.environments.deepmind_lab import DeepMindLab
34+
from tensorforce.util import build_preprocessing_stack, create_agent, log_levels
3735
from tensorforce.execution import Runner
3836

3937

@@ -61,9 +59,9 @@ def main():
6159

6260
args = parser.parse_args()
6361

64-
env = DeepMindLabEnvironment(args.level_id)
62+
env = DeepMindLab(args.level_id)
6563

66-
config = Config({
64+
config = Configuration({
6765
'repeat_actions': 1,
6866
'actions': env.actions,
6967
'action_shape': env.action_shape,

examples/openai_gym.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@
2626
import logging
2727
import numpy as np
2828

29-
from tensorforce.config import Config
30-
from tensorforce.external.openai_gym import OpenAIGymEnvironment
31-
from tensorforce.util.experiment_util import build_preprocessing_stack
32-
from tensorforce.util.agent_util import create_agent
33-
from tensorforce.util.config_util import log_levels
29+
from tensorforce.config import Configuration
30+
from tensorforce.environments.openai_gym import OpenAIGym
31+
from tensorforce.util import build_preprocessing_stack, create_agent, log_levels
3432
from tensorforce.execution import Runner
3533

3634

@@ -53,9 +51,9 @@ def main():
5351

5452
args = parser.parse_args()
5553

56-
env = OpenAIGymEnvironment(args.gym_id, monitor=args.monitor, monitor_safe=args.monitor_safe, monitor_video=args.monitor_video)
54+
env = OpenAIGym(args.gym_id, monitor=args.monitor, monitor_safe=args.monitor_safe, monitor_video=args.monitor_video)
5755

58-
config = Config({
56+
config = Configuration({
5957
'repeat_actions': 1,
6058
'actions': env.actions,
6159
'action_shape': env.action_shape,

examples/openai_gym_async.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,10 @@
2929

3030
from six.moves import xrange, shlex_quote
3131

32-
from tensorforce.config import Config, create_config
32+
from tensorforce.config import Configuration, create_config
3333
from tensorforce.execution.distributed_runner import DistributedRunner
34-
from tensorforce.external.openai_gym import OpenAIGymEnvironment
35-
from tensorforce.util.config_util import log_levels
36-
from tensorforce.util.experiment_util import build_preprocessing_stack
34+
from tensorforce.environments.openai_gym import OpenAIGym
35+
from tensorforce.util import log_levels, build_preprocessing_stack
3736

3837

3938
def main():
@@ -127,9 +126,9 @@ def build_cmd(index, parameter_server):
127126

128127
return 0
129128

130-
env = OpenAIGymEnvironment(args.gym_id)
129+
env = OpenAIGym(args.gym_id)
131130

132-
config = Config({
131+
config = Configuration({
133132
'repeat_actions': 1,
134133
'actions': env.actions,
135134
'action_shape': env.action_shape,

examples/openai_universe.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@
2727
import numpy as np
2828

2929
from tensorforce.config import Config
30-
from tensorforce.external.openai_universe import OpenAIUniverseEnvironment
31-
from tensorforce.util.agent_util import create_agent, get_default_config
32-
from tensorforce.util.wrapper_util import create_wrapper
30+
from tensorforce.environments.openai_universe import OpenAIUniverse
31+
from tensorforce.util import create_agent, get_default_config, build_preprocessing_stack
3332

3433

3534
def main():
@@ -55,7 +54,7 @@ def main():
5554

5655
max_timesteps = args.max_timesteps
5756

58-
environment = OpenAIUniverseEnvironment(env_id)
57+
environment = OpenAIUniverse(env_id)
5958

6059
config = Config({
6160
'actions': environment.actions,
@@ -69,10 +68,13 @@ def main():
6968
if args.network_config:
7069
config.read_json(args.network_config)
7170

72-
state_wrapper = None
73-
if config.state_wrapper:
74-
state_wrapper = create_wrapper(config.state_wrapper, config.state_wrapper_param)
75-
config.state_shape = state_wrapper.state_shape(config.state_shape)
71+
72+
preprocessing_config = config.get('preprocessing')
73+
if preprocessing_config:
74+
stack = build_preprocessing_stack(preprocessing_config)
75+
config.state_shape = stack.shape(config.state_shape)
76+
else:
77+
stack = None
7678

7779
agent = create_agent(args.agent, config)
7880

@@ -89,8 +91,8 @@ def main():
8991
episode_reward = 0
9092
repeat_action_count = 0
9193
for j in xrange(max_timesteps):
92-
if state_wrapper:
93-
full_state = state_wrapper.get_full_state(state)
94+
if stack:
95+
full_state = stack.process(state)
9496
else:
9597
full_state = state
9698
if repeat_action_count <= 0:

examples/simple_q_agent.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@
2525
import tensorflow as tf
2626
import logging
2727

28-
from tensorforce.agents import MemoryAgent
29-
from tensorforce.models import Model
30-
from tensorforce.models.neural_networks import NeuralNetwork
28+
from tensorforce.core import MemoryAgent, Model
29+
from tensorforce.core.networks import NeuralNetwork
3130

32-
from tensorforce.config import Config
33-
from tensorforce.external.openai_gym import OpenAIGymEnvironment
31+
from tensorforce.config import Configuration
32+
from tensorforce.environments.openai_gym import OpenAIGym
3433
from tensorforce.execution import Runner
3534

3635

@@ -188,9 +187,9 @@ def main():
188187
max_episodes = 10000
189188
max_timesteps = 1000
190189

191-
env = OpenAIGymEnvironment(gym_id, monitor=False, monitor_video=False)
190+
env = OpenAIGym(gym_id, monitor=False, monitor_video=False)
192191

193-
config = Config({
192+
config = Configuration({
194193
'repeat_actions': 1,
195194
'actions': env.actions,
196195
'action_shape': env.action_shape,

tensorforce/config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,23 @@ def read_json(self, filename):
5454
# don't catch, we let open() and json.loads() raise their own exceptions
5555
with open(path, 'r') as f:
5656
self.update(json.loads(f.read()))
57+
58+
59+
def create_config(values, default=None):
60+
"""
61+
Create Config object from dict. Use default dict for default values.
62+
:param values: dict containing actual values
63+
:param default: dict containing default values or string pointing to default file
64+
:return: Config object
65+
"""
66+
if default:
67+
if isinstance(default, dict):
68+
default_data = default
69+
else:
70+
raise ValueError("Invalid default config data.")
71+
config = Configuration(default)
72+
if values:
73+
config.update(values)
74+
else:
75+
config = Configuration(values)
76+
return config

tensorforce/core/agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
from random import random, randrange
3030

31-
from tensorforce import util
31+
from tensorforce.util import module
3232
from tensorforce.core.explorations import explorations
3333

3434

@@ -70,7 +70,7 @@ def __init__(self, config, network_builder):
7070
elif exploration in explorations:
7171
self.exploration[name] = explorations[exploration](*args, **kwargs)
7272
else:
73-
self.exploration[name] = util.module(exploration)(*args, **kwargs)
73+
self.exploration[name] = module(exploration)(*args, **kwargs)
7474

7575
self.episodes = 0
7676
self.timesteps = 0

tensorforce/core/networks/conjugate_gradient_optimizer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def solve(self, f_Ax, b):
7070
residual_dot_residual = new_residual_dot_residual
7171

7272
if residual_dot_residual < self.stop_residual:
73-
self.logger.debug('Approximate cg solution found after ' + str(i) + ' iterations')
73+
self.logger.debug('Approximate cg solution found after {:d} iterations'.format(i+1))
7474
break
7575

7676
return x

tensorforce/environments/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,4 @@
1616

1717
from tensorforce.environments.environment import Environment
1818

19-
2019
__all__ = ['Environment']

tensorforce/exception.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,10 @@ class TensorForceError(Exception):
2424
TensorForce error
2525
"""
2626
pass
27+
28+
29+
class ConfigError(TensorForceError):
30+
"""
31+
TensorForce error
32+
"""
33+
pass

0 commit comments

Comments
 (0)