保存模型后无法训练_无法将保存的模型用作训练基线的MlpPolicy的起点?

我目前正在使用OpenAI baselines中的代码来训练模型,在我的train.py中使用以下代码:from baselines.common import tf_util as U

import tensorflow as tf

import gym, logging

from visak_dartdeepmimic import VisakDartDeepMimicArgParse

def train(env, initial_params_path,

save_interval, out_prefix, num_timesteps, num_cpus):

from baselines.ppo1 import mlp_policy, pposgd_simple

sess = U.make_session(num_cpu=num_cpus).__enter__()

U.initialize()

def policy_fn(name, ob_space, ac_space):

print("Policy with name: ", name)

policy = mlp_policy.MlpPolicy(name=name, ob_space=ob_space, ac_space=ac_space,

hid_size=64, num_hid_layers=2)

saver = tf.train.Saver()

if initial_params_path is not None:

print("Tried to restore from ", initial_params_path)

saver.restore(tf.get_default_session(), initial_params_path)

return policy

def callback_fn(local_vars, global_vars):

iters = local_vars["iters_so_far"]

saver = tf.train.Saver()

if iters % save_interval == 0:

saver.save(sess, out_prefix + str(iters))

pposgd_simple.learn(env, policy_fn,

max_timesteps=num_timesteps,

callback=callback_fn,

timesteps_per_actorbatch=2048,

clip_param=0.2, entcoeff=0.0,

optim_epochs=10, optim_stepsize=3e-4, optim_batchsize=64,

gamma=1.0, lam=0.95, schedule='linear',

)

env.close()

这一切都很好,只是我得到了一些看起来很奇怪的学习曲线,我怀疑这是由于传递给learn函数的一些超参数造成的,这些超参数会导致性能随着时间的推移而衰减/高方差(尽管我不确定)

无论如何,为了确认这个假设,我想重新训练这个模型,但不是从头开始:我想从一个高点开始:比如说,迭代1600,我有一个保存的模型放在那里(在callback_fn中用saver.save保存了它)

所以现在我调用了train函数,但这次我为它提供了一个inital_params_path,指向迭代1600的save前缀。根据我的理解,在policy_fn中调用saver.restore应该将模型恢复到操作1600的位置(我已经确认加载例程使用print语句运行)

然而,在实践中,我发现几乎没有什么东西会被加载。例如,如果我得到的统计数据

^{pr2}$

对于迭代1600,然后对于新试验的迭代1(表面上使用1600的参数作为起点),我得到如下结果

^{3}$

这又回到了原点(这就是我的模特从零开始训练的地方)

有趣的是,我知道模型至少被正确地保存了,因为我实际上可以使用eval.py重放它from baselines.common import tf_util as U

from baselines.ppo1 import mlp_policy, pposgd_simple

import numpy as np

import tensorflow as tf

class PolicyLoaderAgent(object):

"""The world's simplest agent!"""

def __init__(self, param_path, obs_space, action_space):

self.action_space = action_space

self.actor = mlp_policy.MlpPolicy("pi", obs_space, action_space,

hid_size = 64, num_hid_layers=2)

U.initialize()

saver = tf.train.Saver()

saver.restore(tf.get_default_session(), param_path)

def act(self, observation, reward, done):

action2, unknown = self.actor.act(False, observation)

return action2

if __name__ == "__main__":

parser = VisakDartDeepMimicArgParse()

parser.add_argument("--params-prefix", required=True, type=str)

args = parser.parse_args()

env = parser.get_env()

U.make_session(num_cpu=1).__enter__()

U.initialize()

agent = PolicyLoaderAgent(args.params_prefix, env.observation_space, env.action_space)

while True:

ob = env.reset(0, pos_stdv=0, vel_stdv=0)

done = False

while not done:

action = agent.act(ob, reward, done)

ob, reward, done, _ = env.step(action)

env.render()

我可以清楚地看到,与未经训练的基线相比,它学到了一些东西。加载操作在两个文件中都是相同的(或者更确切地说,如果有错误,那么我就找不到它),所以我认为{}很可能正确地加载了模型,然后由于{a3}中的某些内容,很快就忘记了它。在

有人能解释一下这种情况吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值