我正在为2048游戏编写AI。目前,我可以从浏览器中拉出游戏状态并将动作发送到游戏,但我不知道如何将其与TensorFlow集成。项目的性质不利于训练数据,所以我想知道是否可以通过游戏状态,让网络移动,移动,重复直到游戏结束,然后有没有做过培训?
答案 0 :(得分:1)
这当然是可能的,也是微不足道的。您必须设置要使用的模型,我将假设已经构建了。
从与tensorflow模型交互的角度来看,您只需要将数据编组为numpy数组,以通过feed_dict
的{{1}}属性传入。
要将输入传递给tensorflow并获得结果,您将运行以下内容:
sess.run
这将执行正向传递,产生模型的输出而不进行任何更新。现在,您将使用result = sess.run([logits], feed_dict={x:input_data})
并使用它们来完成游戏中的下一步。
现在您已获得行动结果(例如标签),您可以执行更新步骤:
results
就这么简单。请注意,您的模型将定义一个优化器(在此示例中为sess.run([update_op], feed_dict={x:input_data, y:labels})
),但如果您不要求tensorflow计算它(如第一个代码示例中那样),则不会进行更新。 Tensorflow就是一个依赖图。优化程序依赖于输出update_op
,但计算logits
不依赖于优化程序。
据推测,您将随机初始化此模型,因此第一批结果将随机生成,但之后的每一步都将受益于之前应用的更新。
如果您正在使用强化学习模型,那么您将在未来的某个不确定时间生成奖励,并且当您运行更新时,此示例会略有不同,但问题的一般性质仍然存在同样的。