-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何得到训练rl模型对内置ai的胜率 #34
Comments
这些内容不需要反注释 你只要按照在说明中给的步骤,跑run.py就可以了 建议跑rl的时候用我们给的sl模型 sl模型也可以自己训练,可是这个训练的过拟合的概率可能会较高,用我们给的sl模型较为保险 |
那我之前直接跑run.py的情况下好像得不到胜率,请问怎么才能看到rl模型的胜率呢 |
胜率用log来看,你把训练后的log曲线用tensorboard打开,整个胜率的增长过程(一开始多少,然后涨到了多少,最终多少)都一清二楚,通过一条线来表达。 胜率不是用output的输出来看的。 |
你的程序跑了多久?使用了多少进程和线程跑的? 我现在猜测你跑的游戏局数(episode)可能根本没到100。训练程序会每100局统计一次胜率,即用当前胜的局数除以100就是胜率。假设这100局有32局获胜了,胜率就是0.32。如果要跑出一条曲线的话,至少要好几百局(这样才有好几个点可以连成一条线)。 你现在的情况可能是连100局都没有跑到,因此连最开始的统计胜率的那个节点都没有运行到。 |
我也认为是局数不足。我的运行时间是30分钟,进程应该是8个,运行结束时提示 Beyond the max_episodes, return! ,因此我尝试修改MAX_EPISODES的值,但是我发现将其从44500改为442000后,运行时间并没有变化。那我怎么才能运行正常的局数呢? agent_0 get final reward 1.0 Parameter_Server end:mean_points_list: []
|
在param.py里有个on_server,你要改成ture(false的情况是用来你在本地测试用的,只有改成ture才会运行大批量测试,所以在服务器上的param.py和在本地的param.py的代码是不一样的,专门用来区分服务器和本地,其它代码则是一样的,这样可以简化部署) 当on_server = True以后,在rl_vs_inner_bot_mp.py里最上面几行
中‘MAX_EPISODES = 4 * 4 * 500’ 这个值是你需要调整的episodes数量 4 * 4 * 500一般来说,你运行不到这么多,所以你根据需要调整 另外,推荐用nohup指令来运行这种多进程的训练,这样你可以随时通过kill掉这个nohup的主进程来停止训练(当kill掉主进程以后,其它的进程会同时结束) |
有一个值是代表超过100局了,但没有运行到200局, 你的 ACTOR_NUMS 与 PARALLEL 这两个参数设置的是多少? |
ACTOR_NUMS = 2 PARALLEL = 8 + 7 * 1 我没有改过这两个值 |
有点奇怪,你能跟我说下你的电脑配置么? 如果电脑的GPU卡不多的,建议把PARALLEL设置低点 PARALLEL可以设置成跟你机器拥有的GPU卡的数目一样的值。 |
我按照服务器GPU数修改PARALLEL的值为2,但是运行时间和次数变少了,tensorbored上显示的运行时间从25h变成了14h |
两个GPU确实有点少了,而且你的GPU估计也不如V100。 我们这里是8个V100全力并行运行一天左右的结果。 |
我希望能得到模型对ai的胜率,因此我将
finally:
print("Parameter_Server end:")
print("--------------------")
print("mean_points_list:", mean_points_list)
print("latest_mean_points:", latest_mean_points)
print("max_mean_points:", max_mean_points)
print("win_rate_list:", win_rate_list)
print("latest_win_rate:", latest_win_rate)
print("max_win_rate:", max_win_rate)
print("--------------------")
这一段代码反注释并重新训练rl模型,但是最后输出的结果为0,我想知道怎么做才能得到您文章中的胜率结果
The text was updated successfully, but these errors were encountered: