在OPENAI基线中保存模型

时间:2019-05-27 13:12:39

标签: model reinforcement-learning openai-gym baseline

Openai Baselines使用以下命令保存训练后的模型,

python -m baselines.run --alg=ppo2 --env=PongNoFrameskip-v4 --num_timesteps=2e7 --save_path=~/models/pong_20M_ppo2

但是保存的训练模型不是形式,

.ckpt.meta
.ckpt.index
.ckpt.data
checkpoint

在早期版本中是以这种形式出现的。如何将模型另存为.ckpt.meta,.ckpt.index,.ckpt.data和检查点格式?

1 个答案:

答案 0 :(得分:0)

我遇到了相同的问题,并且通过对基准代码进行一些调整来解决了这个问题。

在基线中有两种用于保存和加载模型的方法(save_state&load_state对和save_variables&loas_variables对),您可以在 baselines / common / tf_util.py 中看到它(line325〜line372) 。

对于最新版本的基准,已经放弃了以.ckpt.meta,.ckpt.index,.ckpt.data和checkpoint格式保存和加载模型的save_state&load_state对,因此您需要重新启用save_state&load_state对。

以ppo2为例,在 baselines / ppo2 / model.py 中,进行以下替换: 在第125行中,替换

self.save = functools.partial(save_variables, sess=sess)
self.load = functools.partial(load_variables, sess=sess)

使用

self.save = functools.partial(save_state, sess=sess)
self.load = functools.partial(load_state, sess=sess)

在第4行中 替换

from baselines.common.tf_util import get_session, save_variables, load_variables

使用

from baselines.common.tf_util import get_session, save_state, load_state

这将用save_state&load_state对替换save_variables&loas_variables对。

希望这会对您有所帮助。