在图灵网的人机对抗AI训练场完成训练后,我们可以前往对抗平台使用模型进行对抗来衡量模型表现;但在前往对抗平台之前,我们也可以通过以下几个途径,初步评估模型的优劣。
1. 通过TensorBoard查看训练数据
对于RL学习框架训练的AI,我们可以通过TensorBoard查看训练数据。
TensorBoard 的工作原理是读取模型训练时产生的 TensorFlow events 文件,实现监控指标的可视化。目前开放的是SCALARS指标,也是TensorBoard的默认打开样式,此处显示Loss曲线图与Reward曲线图。
训练过程中,TensorBoard实时更新训练数据(在右上角设置中可勾选Reload data every 30s每30秒更新一次数据),这样在训练结束后,保留下来的TensorBoard 界面将显示完整训练的曲线图。
我们可以通过reward数据为正的比例粗略衡量训练的模型表现,同时在训练过程中监控训练是否异常,例如reward曲线持续是水平直线,等等。一个较良好的曲线如图:
同时可鼠标浮标查看每个run的具体数值
界面右上角“INACTIVE”处存放的是TensorBoard 尚未开放的面板。例如IMAGE面板,一般在如果模型输入是图像(的像素值)时需要用来监控图像输入迭代等;GRAPHS面板可以展示出你所构建的网络整体结构,显示数据流的方向和大小,也可以显示训练时每个节点的用时、耗费的内存大小以及参数多少,等等。目前仅开放了SCALARS展示loss与reward情况,如果对其他面板有需求,欢迎留言交流。
2. 上传复盘文件查看推演和得分
除了训练过程中与训练结束后通过曲线图监测训练效果,对训练过程有疑问的,可以在下载模型之后,通过上传复盘文件来核实每一局推演的具体情况。
点击“下载模型与Agent”下载模型:
复盘文件存放在训练完毕后项目文件的ai/logs/replay下,将复盘文件上传至陆战兵棋推演复盘系统(http://wargame.ia.ac.cn:8080/2DREPLAY/#/),可以播放推演并且核实结果。
3. 下载模型运行测试代码
ai/test_model.py是用来测试model_save文件夹下模型文件的测试代码,模型文件存放在model_save文件夹下。通过测试某场景下已训练完成的模型在固定局数中能胜利多少局,来衡量模型表现。
测试代码中已有想定、角色、对手等的默认值,其中可在代码中修改enemy来切换对手。测试对手默认demoAI:
enemy = DemoAgent()
例如将测试的对手改为紫冬智剑,则:
from ai.examples.ai.agent import Agent as zizhidongjianAgent
enemy = zizhidongjianAgent()
测试场景的想定、角色等可在执行命令中传入新参数来切换。测试命令示例:
Test red agent:
cd yourBaselineAI
python3 ai/test_model.py --color 0 --model_num 0 --test_path model_save
Test blue agent:
cd yourBaselineAI
python3 ai/test_model.py --color 1 --model_num 0 --test_path model_save
一个测试结果:下图为过探索四级的RL型AI在201033029601想定对战DemoAI最后一局的分数情况与最后胜率,可以看到结果为10局1胜。
关于对训练模型的自行测试,如果有什么建议或者遇到什么问题,也欢迎留言交流。
cd baselineAI
python3 ai/rl_train.py --scenario 201033029601 --color 0 --opponent 0 --cross_policy_weights 0.25
Traceback (most recent call last):
File "ai/rl_train.py", line 161, in <module>
c = rl_train(args.batchsize, args.color, 201033029601, b, args.train_game_num, args.frame_skip_num, args.save_model_path)
File "ai/rl_train.py", line 49, in __init__
self.rewardsys = rewardSys(self.color)
File "./ai/perception.py", line 98, in __init__
self.map = Map(201033029601)
File "core/utils/map.py", line 10, in utils.map.Map.__init__
File "core/env/wgloader/file_loader.py", line 34, in env.wgloader.file_loader.FileLoader.__init__
AssertionError
你好,请问这个是怎么回事