python 中用于强化学习的模拟和可视化库?
Simulation and visualization libraries for reinforcement learning in python?
我知道 keras,阻止了其他几个 Python nn 的库,这些库在其他中做 RL。但是有没有一个库可以使可视化任务变得容易呢?在 agents/environment 的 3D 模型方面,看到模拟等......我可以在网上看到一些显示模拟 agent/environment 的 RL 视频,但他们要么从头开始制作视觉模型,要么使用一些其他language/technology...(或者他们很老)
一般来说,这是 3D 可视化库 和 3D 科学可视化 库之间的区别,后者具有更多 "high-level"比之前的可视化方法(直接调用散点图、曲面等)。
由于您没有指定要绘制的实际示例,我只能提供被认为简单的可行库(考虑 Python 的 3D 库世界)。
一个是 VPython which has very explicit syntax towards 3D primitives. This 将是构建球体和长方体的有效代码:
from visual import *
ball = sphere(pos=(-5,0,0), radius=0.5, color=color.cyan)
wallR = box(pos=(6,0,0), size=(0.2,12,12), color=color.green)
如果您的模拟依赖于非常明确的对象,如图像、表面、散点等,您可能想看看 matplotlib 的 3D 功能:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs = np.random.randint(0,100,100)
ys = np.random.randint(0,100,100)
zs = np.random.randint(0,100,100)
ax.scatter(xs, ys, zs, c=c)
plt.show()
另外 Mayavi 有很多高层次的调用来了解情节(但我认为在我写这篇文章的时候在 Python 3 中仍然不可用,如果有人纠正我我错了):
import numpy
from mayavi.mlab import *
def test_surf():
"""Test surf on regularly spaced co-ordinates like MayaVi."""
def f(x, y):
sin, cos = numpy.sin, numpy.cos
return sin(x + y) + sin(2 * x - y) + cos(3 * x + 4 * y)
x, y = numpy.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
s = surf(x, y, f)
#cs = contour_surf(x, y, f, contour_z=0)
return s
Mayavi 本身基于 VTK,后者还有一个 Python API。其他相关图书馆是:
- pyQtGraph:如果您想将可视化(2D 和 3D)嵌入到 PySide 或 PyQt 中,那就太好了。
- Glumpy
- Vispy:它仍然很新,但我期待从这个库中得到很棒的东西。如果我没记错的话,它是由使用 pyQtGraph、Glumpy 和 Galry 等库的同一个人制作的。
- Galry
还有其他类似 OpenSceneGraph, OpenGL or Coin3D 的绑定,但很多都没有很好的记录,或者学习曲线非常艰难。
另外,您可能还想考虑 Blender,因为您可以在内部使用 Python,并且它具有非常丰富的 3D 建模环境。
您可能对 3D 环境 OpenAI Gym and MuJoCo 感兴趣 simulation/visualization。
我知道 keras,阻止了其他几个 Python nn 的库,这些库在其他中做 RL。但是有没有一个库可以使可视化任务变得容易呢?在 agents/environment 的 3D 模型方面,看到模拟等......我可以在网上看到一些显示模拟 agent/environment 的 RL 视频,但他们要么从头开始制作视觉模型,要么使用一些其他language/technology...(或者他们很老)
一般来说,这是 3D 可视化库 和 3D 科学可视化 库之间的区别,后者具有更多 "high-level"比之前的可视化方法(直接调用散点图、曲面等)。
由于您没有指定要绘制的实际示例,我只能提供被认为简单的可行库(考虑 Python 的 3D 库世界)。
一个是 VPython which has very explicit syntax towards 3D primitives. This 将是构建球体和长方体的有效代码:
from visual import *
ball = sphere(pos=(-5,0,0), radius=0.5, color=color.cyan)
wallR = box(pos=(6,0,0), size=(0.2,12,12), color=color.green)
如果您的模拟依赖于非常明确的对象,如图像、表面、散点等,您可能想看看 matplotlib 的 3D 功能:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs = np.random.randint(0,100,100)
ys = np.random.randint(0,100,100)
zs = np.random.randint(0,100,100)
ax.scatter(xs, ys, zs, c=c)
plt.show()
另外 Mayavi 有很多高层次的调用来了解情节(但我认为在我写这篇文章的时候在 Python 3 中仍然不可用,如果有人纠正我我错了):
import numpy
from mayavi.mlab import *
def test_surf():
"""Test surf on regularly spaced co-ordinates like MayaVi."""
def f(x, y):
sin, cos = numpy.sin, numpy.cos
return sin(x + y) + sin(2 * x - y) + cos(3 * x + 4 * y)
x, y = numpy.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
s = surf(x, y, f)
#cs = contour_surf(x, y, f, contour_z=0)
return s
Mayavi 本身基于 VTK,后者还有一个 Python API。其他相关图书馆是:
- pyQtGraph:如果您想将可视化(2D 和 3D)嵌入到 PySide 或 PyQt 中,那就太好了。
- Glumpy
- Vispy:它仍然很新,但我期待从这个库中得到很棒的东西。如果我没记错的话,它是由使用 pyQtGraph、Glumpy 和 Galry 等库的同一个人制作的。
- Galry
还有其他类似 OpenSceneGraph, OpenGL or Coin3D 的绑定,但很多都没有很好的记录,或者学习曲线非常艰难。
另外,您可能还想考虑 Blender,因为您可以在内部使用 Python,并且它具有非常丰富的 3D 建模环境。
您可能对 3D 环境 OpenAI Gym and MuJoCo 感兴趣 simulation/visualization。