PyBrain QTable(ActionValueTable)没有改变

时间:2016-12-27 04:06:13

标签: python-2.7 machine-learning python-2.x pybrain

我关注了一篇博文(here),其中作者用PyBrain编写了一个程序来学习如何玩二十一点。他概述了他正在使用一个用零初始化的Q表。最后,他在节目进行了300场比赛后展示了他的成绩(最终的Q-Table)。

我的问题是,当我自己运行代码,完全复制时,Q-Table不会更新。即使在1000只手之后,它仍然只是一张零的表。

下面是我的代码版本,其中我只为Q-Table添加了一个print语句。

from blackjacktask import BlackjackTask
from blackjackenv import BlackjackEnv
from pybrain.rl.learners.valuebased import ActionValueTable
from pybrain.rl.agents import LearningAgent
from pybrain.rl.learners import Q
from pybrain.rl.experiments import Experiment
from pybrain.rl.explorers import EpsilonGreedyExplorer    
av_table = ActionValueTable(21, 2)
av_table.initialize(0.)
learner = Q(0.5, 0.0)
learner._setExplorer(EpsilonGreedyExplorer(0.0))
agent = LearningAgent(av_table, learner)
env = BlackjackEnv()
task = BlackjackTask(env)
experiment = Experiment(task, agent)
c=0
while True:
    c+=1
    print "Hand "+str(c)+"."
    experiment.doInteractions(1)
    agent.learn()
    print av_table.params.reshape(21,2)
    agent.reset()

除了添加print语句之外,我将blackjacktaskblackjackenv的文件位置更改为学习程序所在的文件夹,只是因为它拒绝导入它时pybrain文件夹。我的程序没有返回导入错误,模块也没有,所以我怀疑这是问题。

问题可能出在博客海报的模块中,可以在他的帖子中找到(here)。

0 个答案:

没有答案