【发布时间】:2017-07-08 07:40:53
【问题描述】:
numpy.take 有类似物吗?
我想从N 维数组形成N+1 维数组,更准确地说是从形状为(B, H, W, C) 的数组我想制作(B, H, W, X, C) 数组。
我想对于我的情况,即使没有这样的一般操作,也有解决方案。但我真的不确定,如果我将编写具有多个中间操作和张量(移位、重复等)的代码,TF 是否能够对其进行优化并删除不必要的操作。此外,我认为这样的代码会不干净而且很糟糕。
我想添加具有移位值的维度。 IE。对于 (H,W)->(H,W,3) 维度,案例索引必须是
[
[[0,0], #[0,-1], may be padding with zeros but for now pad with edge value
[0,0],
[0,1]],
[[0,0],
[0,1]
[0,2]]
...
[[1,0],
[1,0],
[1,1]],
[[1,0],
[1,1],
[1,2]],
...
]
我想过tf.scatter_nd (https://www.tensorflow.org/api_docs/python/tf/scatter_nd) 但现在我不明白如何使用它。如果我理解正确,我不能将indices 与形状大于update 数组的形状一起使用(即我不能将indices 与形状(3,4,5,3) 和update 与形状(3,4,3) 甚至@ 一起使用987654335@。如果是这样,那么这个操作似乎没用,直到我制作了需要在结果中形成的形状的中间数组。
UPD:可能是我错了,张量操作(移位、平铺等)是更合适和有效的解决方案。
但无论如何,我认为np.take 的类似物会很有用。
【问题讨论】:
-
我不明白你的
np.take类比。它只是沿一维索引 - 可以选择换行或剪裁。
标签: arrays numpy tensorflow