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