Blender和Tensorflow之间的通信

时间:2017-01-23 00:38:14

标签: python machine-learning tensorflow blender reinforcement-learning

我在Blender中有一个模拟,我想使​​用TensorFlow库进行外部控制。完整的过程将是这样的:

while True:
    state = observation_from_blender()
    action = find_action_using_tensorflow_neural_net(state)
    take_action_inside_blender(action)

我对线程或子进程模块没有多少经验,因此我不确定如何实际构建这样的东西。

3 个答案:

答案 0 :(得分:2)

我建议您先看看Open AI Universe Starter Agent [1],而不是乱用Tensorflow连接和API。这里的优点是,只要您打开VNC会话,就可以连接基于TF的系统来对您的操作进行强化学习。

一旦你通过这个构建了一个模型,你就可以专注于实际构建一个较低级别的API系统,以便彼此交谈。

[1] https://github.com/openai/universe-starter-agent

答案 1 :(得分:0)

感谢您的回复。不幸的是,尝试让Universe使用我当前的设置有点痛苦。我也处于一个相当紧迫的截止日期,所以我只需要一些能够立即发挥作用的东西。

我找到了一个有点DIY的解决方案,使用pickle模块很适合我的情况。我真的不知道如何将这种方法转换为适当的伪代码,所以这里是大致的概述:

Process 1 - TensorFlow:
    load up TF graph
    wait until pickled state arrives

while not terminated:

    Process 2 - Blender: 
        run simulation until next action required
        pickle state
        wait until pickled action arrives

    Process 1 - TensorFlow:
        unpickle state
        feedforward state through neural net, find action
        pickle action
        wait until next pickled state arrives

    Process 2 - Blender:
        unpickle action
        take action

这种方法对我来说效果很好,但我想有更优雅的低级解决方案。我很想知道任何其他可能达到同一目标的方法。

答案 2 :(得分:0)

我这样做是为了安装与混合器捆绑在一起的python版本的tensorflow。

  • Blender版本:2.78
  • Python版本:3.5.2

    1. 首先你需要为blender的python安装pip。为此,我按照此链接中提到的说明进行操作:https://blender.stackexchange.com/questions/56011/how-to-use-pip-with-blenders-bundled-python。 (我所做的是将python3.5m图标拖到终端,然后再输入命令'〜/ get-pip.py')。
    2. 一旦你安装了pip,你就可以安装第三方模块并与搅拌机一起使用。
    3. 导航到bin文件夹内部' / home / path到blender / 2.78 /'目录。要安装tensorflow,将python3.5m图标拖到终端,然后将pip3图标拖到终端并输入命令install tensorflow。
    4. 我收到错误提到未找到模块lib2to3。即使安装模块也没有帮助,因为我收到的消息是没有这样的模块。幸运的是,我的机器上安装了python 3.5.2。因此,导航到/usr/lib/python3.5并将lib2to3文件夹从那里复制到/home/user/blender/2.78/python/lib/python3.5,然后再次运行tensorflow的安装命令。安装应该没有任何错误。确保通过导入tensorflow来测试安装。