保存模型
RL中,我们一般都把一个网络结构写在一个类里面,保存的时候也是,可以如下写一个 save_net 函数:
def save_net(self):
saver = tf.train.Saver()
save_path = saver.save(self.sess, "./dqn/model/file_name.ckpt")
print("Save to path: ", save_path)
在RL算法进行完N轮的训练之后,调用该函数进行模型保存:agent.save_net()
可以看到,会在model文件夹下多出四个文件:
也可以输出保存前的参数,进行观察,以便确认读取模型时是否成功读取了参数:
w1 = tf.get_default_graph().get_tensor_by_name('eval_net/l1/w1:0') # 获得variable对应的Tensor
print(self.sess.run(w1)) # run一下这个Tensor得到结果
读取模型
首先注意,读取模型用于测试时,我们需要保证用到的变量和训练时的是一样的,比如测试DQN模型的效果:
class Test4DQ