Tensorflow中的可读数据定义

时间:2019-03-08 19:51:16

标签: python tensorflow

在TensorFlow中是否有任何使Tensor看起来更像本机python数据结构的良好模式?

例如,在我的应用程序中,我想表示3D空间中的一批N射线。每条射线都包含一个起点(表示为3D矢量)和一个方向(也是3D矢量)。代表这一点的最好方法是什么?

选项1:(N,6)张量,使用索引

我可以拥有一个代表所有光线的张量t。如果需要起点,可以使用t[:, :3],如果需要指导,可以使用t[:, 3:]。这行得通,但不是很可读。就像为C中的字段指定字节偏移量一样。是的,它起作用了,但这是有结构的原因。

我可以添加诸如get_ray_starts()get_ray_dirs()之类的顶级函数,这些函数在内部进行切片,但根本不是pythonic。进行诸如通过某个固定向量转换所有起点的操作也很痛苦:我要么需要将张量分割开,进行加法运算,然后再将其合并在一起,要么用3个奇怪的零填充该向量。

选项2:两个张量。

我可以分别制作(N,3)个ray_startsray_dirs张量。但随后,我必须将它们都传递出去,并且经常对每个对象执行相同的操作(例如,分成多个批处理)。我可以通过添加一个namedtuple来避免在两个函数之间传递,但是我仍然想不断地对namedtuple进行解包和重新构造,只要我想对张量做些什么。闷闷不乐

选项3:?????

任何人都知道可以简化此过程的模式吗?

0 个答案:

没有答案