Skip to content
This repository has been archived by the owner on Feb 23, 2019. It is now read-only.

Which version of python/tensorflow should I use? #6

Open
Axxeption opened this issue Nov 21, 2017 · 6 comments
Open

Which version of python/tensorflow should I use? #6

Axxeption opened this issue Nov 21, 2017 · 6 comments

Comments

@Axxeption
Copy link

Hi,

I try to run you code, if I try with python 3.5.2 I got this error:

Using TensorFlow backend. Traceback (most recent call last): File "rl_teacher/teach.py", line 155, in <module> main() File "rl_teacher/teach.py", line 20, in main multiprocessing.set_start_method('spawn') File "/home/axel/miniconda3/envs/rlteacher/lib/python3.5/multiprocessing/context.py", line 231, in set_start_method raise RuntimeError('context has already been set') RuntimeError: context has already been set

If I try with python 3.6, I got this error:
Traceback (most recent call last): File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "/home/axel/rl-teacher-atari/agents/ga3c/ga3c/ThreadDynamicAdjustment.py", line 89, in run self.enable_disable_components() File "/home/axel/rl-teacher-atari/agents/ga3c/ga3c/ThreadDynamicAdjustment.py", line 70, in enable_disable_components self.server.add_agent() File "/home/axel/rl-teacher-atari/agents/ga3c/ga3c/Server.py", line 68, in add_agent self.agents[-1].start() File "/usr/lib/python3.5/multiprocessing/process.py", line 105, in start self._popen = self._Popen(self) File "/usr/lib/python3.5/multiprocessing/context.py", line 212, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "/usr/lib/python3.5/multiprocessing/context.py", line 274, in _Popen return Popen(process_obj) File "/usr/lib/python3.5/multiprocessing/popen_spawn_posix.py", line 33, in __init__ super().__init__(process_obj) File "/usr/lib/python3.5/multiprocessing/popen_fork.py", line 20, in __init__ self._launch(process_obj) File "/usr/lib/python3.5/multiprocessing/popen_spawn_posix.py", line 48, in _launch reduction.dump(process_obj, fp) File "/usr/lib/python3.5/multiprocessing/reduction.py", line 59, in dump ForkingPickler(file, protocol).dump(obj) TypeError: can't pickle _thread.lock objects
So I don't know wich version to use. I tried installing it with pip, and this was succeed.

@henrykmichalewski
Copy link

With python 3.5 I am getting something similar

Traceback (most recent call last):
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/home/henryk.michalewski/montezuma/rl-teacher-atari/agents/ga3c/ga3c/ThreadDynamicAdjustment.py", line 89, in run
    self.enable_disable_components()
  File "/home/henryk.michalewski/montezuma/rl-teacher-atari/agents/ga3c/ga3c/ThreadDynamicAdjustment.py", line 70, in enable_disable_components
    self.server.add_agent()
  File "/home/henryk.michalewski/montezuma/rl-teacher-atari/agents/ga3c/ga3c/Server.py", line 68, in add_agent
    self.agents[-1].start()
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/process.py", line 105, in start
    self._popen = self._Popen(self)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/context.py", line 212, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/context.py", line 274, in _Popen
    return Popen(process_obj)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/popen_spawn_posix.py", line 33, in __init__
    super().__init__(process_obj)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/popen_fork.py", line 20, in __init__
    self._launch(process_obj)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/popen_spawn_posix.py", line 48, in _launch
    reduction.dump(process_obj, fp)
  File "/home/henryk.michalewski/anaconda2/envs/monteconda/lib/python3.5/multiprocessing/reduction.py", line 59, in dump
    ForkingPickler(file, protocol).dump(obj)
TypeError: can't pickle _thread.lock objects

@henrykmichalewski
Copy link

A partial resolution to the issue

    # Tensorflow is not fork-safe, so we must use spawn instead
    # https://github.com/tensorflow/tensorflow/issues/5448#issuecomment-258934405
    multiprocessing.set_start_method('spawn')

This is a part of teach.py. I commented the last line and the above error disappears. Apparently the official implementation of GA3C from Nvidia does not have a call multiprocessing.set_start_method('spawn') and still works. I am assuming that authors of rl-teacher consciously added this line to avoid some other troubles, hence this fix may appear not satisfactory. Hopefully we hear something from the authors soon :)

@amanjhunjhunwala
Copy link

Had same problem, Complete resolution : Use gym version 0.9
Tested with Tensorflow==1.5

@Anmol6
Copy link

Anmol6 commented May 13, 2018

@amanjhunjhunwala I tried those versions but still can't get it to work. Could you provide .yml file of your conda environment (or Dockerfile if you're not using conda)?

@ZhanPython
Copy link

Which tensorflow version should I need to use? I tested:
python rl_teacher/teach.py -e Breakout-v0 -n synth-test -p synth -l 300
and I get this error:
Using TensorFlow backend. Setting things up... Starting random rollouts to generate pretraining segments. No learning will take place... WARN: <class 'rl_teacher.envs.PixelEnvViewer'> doesn't implement 'reset' method, but it implements deprecated '_reset' method. Collected 40/76 segments Successfully collected 76 segments 2019-01-14 12:57:52.990717: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA Traceback (most recent call last): File "rl_teacher/teach.py", line 155, in <module> main() File "rl_teacher/teach.py", line 99, in main n_pretrain_labels, args.clip_length, args.stacked_frames, args.workers) File "/home/adminusl/rl-teacher-atari/rl_teacher/reward_models.py", line 112, in __init__ self.graph = self._build_model() File "/home/adminusl/rl-teacher-atari/rl_teacher/reward_models.py", line 135, in _build_model net = FullyConnectedMLP(self.obs_shape, self.act_shape) File "/home/adminusl/rl-teacher-atari/rl_teacher/nn.py", line 17, in __init__ self.model.add(Dense(h_size, input_dim=input_dim)) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/engine/sequential.py", line 165, in add layer(x) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/engine/base_layer.py", line 431, in __call__ self.build(unpack_singleton(input_shapes)) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/layers/core.py", line 866, in build constraint=self.kernel_constraint) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper return func(*args, **kwargs) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/engine/base_layer.py", line 249, in add_weight weight = K.variable(initializer(shape), File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/initializers.py", line 218, in __call__ dtype=dtype, seed=self.seed) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 4139, in random_uniform dtype=dtype, seed=seed) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/tensorflow/python/ops/random_ops.py", line 240, in random_uniform shape, dtype, seed=seed1, seed2=seed2) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/tensorflow/python/ops/gen_random_ops.py", line 449, in _random_uniform name=name) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 609, in _apply_op_helper param_name=input_name) File "/home/adminusl/anaconda3/envs/py35atari/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 60, in _SatisfiesTypeConstraint ", ".join(dtypes.as_dtype(x).name for x in allowed_list))) TypeError: Value passed to parameter 'shape' has DataType float32 not in list of allowed values: int32, int64
How can I fix this issue?

@malob malob changed the title which python version should I need to use? Which version of python/tensorflow should I use? Jan 22, 2019
@malob
Copy link
Member

malob commented Jan 22, 2019

Just wanted to leave a quick note to say that we are no longer maintaining this project, and so won't be responding to issues etc. I'll leave this issue open however, so others who want to use the project can help each other solve issues etc.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants