keras-rl2 icon indicating copy to clipboard operation
keras-rl2 copied to clipboard

DDPG ValueError: name for name_scope must be a string.

Open inarikami opened this issue 5 years ago • 4 comments

While running either DDPG agent, I encounter a value error in a Tensorflow 2 ops.py method. The problem appears to be recreated whenever the AdditionalUpdatesOptimizer class is initialized.

Error:

ValueError: name for name_scope must be a string.

The potential error causing class in Keras-rl2 utils.py:

class AdditionalUpdatesOptimizer(optimizers.Optimizer):
    def __init__(self, optimizer, additional_updates):
        super().__init__(optimizer)
        self.optimizer = optimizer
        self.additional_updates = additional_updates

    def get_updates(self, params, loss):
        updates = self.optimizer.get_updates(params=params, loss=loss)
        updates += self.additional_updates
        self.updates = updates
        return self.updates

    def get_config(self):
        return self.optimizer.get_config()

Traceback list:

File "/Users/taylormcnally/.vscode/extensions/ms-python.python-2019.5.18875/pythonFiles/ptvsd_launcher.py", line 43, in <module> main(ptvsdArgs) File "/Users/taylormcnally/.vscode/extensions/ms-python.python-2019.5.18875/pythonFiles/lib/python/ptvsd/__main__.py", line 434, in main run() File "/Users/taylormcnally/.vscode/extensions/ms-python.python-2019.5.18875/pythonFiles/lib/python/ptvsd/__main__.py", line 312, in run_file runpy.run_path(target, run_name='__main__') File "/anaconda3/envs/tf2/lib/python3.6/runpy.py", line 263, in run_path pkg_name=pkg_name, script_name=fname) File "/anaconda3/envs/tf2/lib/python3.6/runpy.py", line 96, in _run_module_code mod_name, mod_spec, pkg_name, script_name) File "/anaconda3/envs/tf2/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/Users/taylormcnally/Documents/GitHub/keras-rl2/examples/ddpg_pendulum.py", line 58, in <module> agent.compile(Adam(lr=.001, clipnorm=1.), metrics=['mae']) File "/Users/taylormcnally/Documents/GitHub/keras-rl2/rl/agents/ddpg.py", line 122, in compile critic_optimizer = AdditionalUpdatesOptimizer(critic_optimizer, critic_updates) File "/Users/taylormcnally/Documents/GitHub/keras-rl2/rl/util.py", line 84, in __init__ super().__init__(optimizer) File "/anaconda3/envs/tf2/lib/python3.6/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py", line 263, in __init__ with backend.name_scope(self._name) as name_scope: File "/anaconda3/envs/tf2/lib/python3.6/site-packages/tensorflow/python/keras/backend.py", line 739, in name_scope return ops.name_scope_v2(name) File "/anaconda3/envs/tf2/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 6248, in __init__ raise ValueError("name for name_scope must be a string.") ValueError: name for name_scope must be a string.

inarikami avatar Jun 13 '19 01:06 inarikami

Any fix to this yet?

mshlis avatar Sep 11 '19 11:09 mshlis

No fix yet, I recommend https://github.com/danaugrs/huskarl for newer algorithms and a cleaner implementation. That repo has a functional ddpg working with Tensorflow 2.

inarikami avatar Sep 14 '19 05:09 inarikami

that link just points back at this project

rxa254 avatar Jul 09 '20 00:07 rxa254

Fixed the link

inarikami avatar Jul 09 '20 06:07 inarikami