强化学习中想要在4个智能体训练出来的模型扩展到更多智能体的模型。
若要可扩展,首先需要所有智能体共享一个模型参数,方法是设置reuse=True即可。
然而,现实操作可能还会存在问题。因此通常三个步骤来查看。
1、通常先输出网络的参数。下面三种方法稍有不同,具体输出可以看出。
# 得到该网络中,所有可以加载的参数的三种方法
variables = tf.contrib.framework.get_variables_to_restore()
for i in range(len(variables)):
print(variables[i])
print('------------variables22222222222---------------')
variables2 = tf.all_variables()
for i in range(len(variables2)):
print(variables2[i])
print('---------variables33333333------------------')
variables2 = tf.trainable_variables() #得到可训练参数
for i in range(len(variables2)):
print(variables2[i])
2、过滤一些无关紧要的参数
# 删除其他参数,adv_agent层中的参数
variables_to_restore = [v for v in variables if v.name.split('/')[0] == 'adv_agent']
3、 加载model的(过滤后)这部分参数
# 构建这部分参数的saver
saver = tf.train.Saver(variables_to_restore)
saver.restore(U.get_session(),arglist.load_dir) #arglist.load_dir就是模型存储的位置
参考链接:
1、https://blog.csdn.net/marsjhao/article/details/72829635#commentBox
2、 https://blog.csdn.net/huachao1001/article/details/78501928
3、https://blog.csdn.net/u011961856/article/details/77064631
4、https://blog.csdn.net/b876144622/article/details/79962727
5、https://blog.csdn.net/jeryjeryjery/article/details/79880475
6、https://blog.csdn.net/CV_YOU/article/details/80698942 (多次载入部分参数)