Я обучаю глубокого агента RL с использованием tenorflow в пользовательской среде и заметил, что вызов метода environment.step в моем обучении l oop намного медленнее, чем просто вызов его снаружи. Вот код psuedo, который объясняет это
class agent():
........
def train():
for i in batch_size:
start = time.time()
nextstate, reward, done = env.step()
agent.timecounter += time.time - start
Для агента я обнаружу, что вызов env.step занимает ~ 0,5 секунды из времени стены ~ 0,8 секунды для одного пакета. Вместо того, чтобы вызывать внутри агента обучения l oop, если я просто вызываю код нормально, я не вижу этих издержек.
start = time.time()
for i in batch_size:
out = env.step()
print(time.time() - start)
Я обнаружу, что для запуска environment.step эквивалентное количество раз требуется всего ~ 0,01 секунды. Что вызывает эти дополнительные накладные расходы? Это делает обучение для меня очень медленным.
Я пробовал с карполом в спортзале, и у него нет этой проблемы. Моя пользовательская среда имеет несколько атрибутов словаря. Возможно ли это, что вызывает проблему? Я не вижу никаких других отличий между моим кодом и карполом для спортзала.
Полный код для воспроизведения на вашем компьютере доступен по адресу https://github.com/ronan-keane/havsim/tree/DL3 в сценариях / назначениях Мэн / control 1 / traintest.py