RAY — RLLIB — Не удалось обучить DQN с использованием пакета автономных образцов — Episode_len_mean: значение .nan

RAY — библиотека RLLIB — оценивает модель DQN, используя автономные пакетные данные. Модель не учится. Episode_len_mean: .nan Для примера CartPole, а также набора данных для личного домена.

Библиотека Ubuntu Ray — автономная среда RLIB DQN: — пробовала с Cartpole-v0, а также с примером пользовательской среды.

Episode_len_mean: .nan Episode_reward_max: .nan Episode_reward_mean: .nan Episode_reward_min: .nan Episodes_this_iter: 0 Episodes_total: 0

Генерация данных с помощью PG

rllib train --run=PG --env=CartPole-v0 --config='{"output": "/tmp/cartpole-out", "output_max_file_size": 5000000}' --stop='{"timesteps_total": 100000}'

Обучить модель на автономных данных

rllib train --run=DQN --env=CartPole-v0 --config='{"input": "/tmp/cartpole-out","input_evaluation": ["is", "wis"],"soft_q": true, "softmax_temp": 1.0}'

Ожидаемый :- Episode_len_mean: числовые значения Episode_reward_max: числовые значения Episode_reward_mean: числовые значения Episode_reward_min: числовые значения

Фактические результаты (в тензорной доске улучшений также не наблюдается):


person narasimha.m    schedule 16.04.2019    source источник
comment
Уточнение: среда имеет версию 1.15.4 numpy, и я получаю эту ошибку после 1-й итерации, а затем значения имеют nans   -  person narasimha.m    schedule 16.04.2019
comment
(pid=11785) /home/ubuntu/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/numpy/core/fromnumeric.py:2957: RuntimeWarning: означает пустой срез. (pid=11785) out=out, **kwargs) (pid=11785) /home/ubuntu/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/numpy/core/_methods.py:80: RuntimeWarning : в double_scalars обнаружено недопустимое значение (pid=11785) ret = ret.dtype.type(ret / rcount)   -  person narasimha.m    schedule 16.04.2019
comment
Среднее значение пустого среза. предупреждение, вероятно, является проблемой (что может объяснить, почему вы видите nan. Имеет ли что-либо длину 0? Например, есть ли некоторые развертывания, которые немедленно завершаются?   -  person Robert Nishihara    schedule 16.04.2019
comment
С примером полюса тележки я не уверен. Просто запустил эти коды, как на странице документации по автономному набору данных Ray. Однако, когда я попробовал это на другом автономном наборе данных (поведение бронирования воронки веб-страницы), я обязательно исключил развертывания с длиной 1 (т. Е. Которые прекращаются немедленно). Я получаю одинаковые предупреждающие сообщения в обоих случаях. Один из членов вашей команды предположил, что это ожидается при обучении в автономном режиме. И был направлен на то, чтобы посмотреть выборку ImportanceSampling/Weighted Importance или значения Mean q. Я поделился этими диаграммами в группе RAY-Dev google. Нужна помощь там. Я не вижу сходящихся моделей   -  person narasimha.m    schedule 18.04.2019


Ответы (1)


У меня была более или менее та же проблема, и она была связана с тем, что эпизод никогда не заканчивался, потому что я неправильно установил значение готовности в функции шага. Пока серия не закончена, Рэй не считает показатели. В моем случае мне пришлось указать счетчик в функции окружения init с именем self.count_steps и увеличиваться на каждом шаге.

 def step(self, action):
    # Changes the yaw angles
    self.cur_yaws = action
    self.farm.calculate_wake(yaw_angles=action)
    # power output
    power = self.farm.get_farm_power()
    reward = (power-self.best_power)/self.best_power

    #if power > self.best_power:
    #    self.best_power = power

    self.count_steps +=1

    if self.count_steps > 50:
        done = True
    else:
        done = False

    return self.cur_yaws, reward, done, {}
person David    schedule 11.11.2020