Как распечатать дистрибутивы действий в RLlib во время обучения? - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь напечатать дистрибутивы действий в конце каждого эпизода, чтобы увидеть, что делает мой агент. Я попытался сделать это - rock_paper_scissors_multiagent.py, включив следующий метод

def on_episode_end(info):
    episode = info["episode"]
    policy = episode._policies['learned']
    print(policy.model.base_model.summary())

    obs_space = Tuple((Discrete(3),Discrete(3)))
    prep = get_preprocessor(obs_space)(obs_space)
    curr_state = list((0,1))
    curr_state = tuple(curr_state)
    curr_state = prep.transform(curr_state)
    logits, _ = policy.model.from_batch({"obs": np.array([curr_state])})
    dist = policy.dist_class(logits, policy.model)
    dist.sample()
    print(dist.logp([0]))

и добавив опцию обратного вызова в tune.run. Однако я получаю следующую ошибку. Это то, как я должен пытаться напечатать политики после каждого эпизода? И если так, что я делаю не так? Оригинальный пример rock_paper_scissors_multiagent.py находится здесь: https://github.com/ray-project/ray/blob/master/rllib/examples/rock_paper_scissors_multiagent.py

Traceback (последний вызов был последним): файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/tune / trial_runner.py ", строка 515, в _process_trial result = self.trial_executor.fetch_result (файл trial)" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/tune/ray_trial_executor.py ",строка 351, в fetch_result result = ray.get (trial_future [0]) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/worker.py", строка 2121, в значении get увеличить. as_instanceof_cause () ray.exceptions.RayTaskError (ValueError): [36mray_worker [39m (pid = 5765, файл host = Charlies-MBP.fios-router.home) "/Users/charliehou/anaconda3/lib/python3.6/site-packages / ray / rllib / agents / trainer.py ", строка 418, в процессе поднятия поезда. Файл" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/agents/trainer.py ",строка 407, результат поезда = файл Trainable.train (self) File "/Users/charliehou/anaconda3/lib/python3.6/site-packages / ray / tune / trainable.py ", строка 176, в результате поезда = файл self._train ()" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/agents/trainer_template. py ", строка 129, в файле _train fetches = self.optimizer.step ()" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/optimizers/multi_gpu_optimizer.py ", строка 140,на шаге self.num_envs_per_worker, self.train_batch_size) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/optimizers/rollout.py", строка 29, в коллекциях_приборов next_sample = ray_get_and_sample f () Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/utils/memory.py", строка 33, в ray_get_and_free result = ray.get (object_ids) ray.exceptions.RayTaskError (ValueError): файл [36mray_worker [39m (pid = 5768, host = Charlies-MBP.fios-router.home) "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/evaluation/rollout_worker.py ", строка 469, в примерах пакетов = [self.input_reader.next ()] Файл" / Users / charliehou / anaconda3 / lib / python3.6 / site-packages / ray / rllib /valuation / sampler.py ", строка 56, в следующих пакетах = [self.get_data ()] файл" / Users / charliehou / anaconda3 / lib /python3.6 / site-packages / ray / rllib /valuation / sampler.py ", строка 99, в файле get_data item = next (self.rollout_provider)" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/evaluation/sampler.py ", строка 319, в _env_runner soft_horizon, no_done_at_end) Файл" /Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/evaluation/sampler.py "строка 473, в _process_observations "эпизод": файл эпизода "rock_paper_scissors_multiagent.py", строка 204, в логах on_episode_end, _ = policy.model.from_batch ({"obs": np.array ([curr_state])}) файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/models/modelv2.py ", строка 197, в from_batch возвращает self. call (input_dict, states, train_batch. get ("seq_lens")) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/models/modelv2.py",строка 154, в вызов res = self.forward (восстановлено, состояние или [], seq_lens) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/ray/rllib/models/tf/fcnet_v2.py ", строка 84, в forward model_out, self._value_out = self.base_model (input_dict [" obs_flat "])Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", строка 634, в вызов output = call_fn (входные данные, *args, ** kwargs) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/network.py", строка 751, при вызове возвращает self._run_internal_graph (входные данные,training = training, mask = mask) Файл «/Users/charliehou/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/network.py», строка 893, в слое _run_internal_graph output_tensors = = (computed_tensors, ** kwargs) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", строка 586, в вызов self. name) Файл "/Users/charliehou/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/input_spec.py", строка 159, в assert_input_compatibility ', но получил входные данные с shape' + str (shape)) ValueError: вход 0 слоя fc_value_1 несовместим со слоем: ожидаемая ось -1 входной фигуры имеет значение 3, но получил входной сигнал с формой [1, 6]

...