TensorFlow 求助~

现在有两个 Tensor (注意是 Tensor,而不是 Variable 或者 Placeholder )

index: [None, 10] dtype=tf.int
data: [None, 10, 4] dtype=tf.float32

我想做另外一个 Tensor

result: [None, 1000, 4] dtype=tf.float32

想实现的内容是

result[index, :] = data

求各位有什么好的解决方案么?

注意第一维( Batch 维)是 None~,注意已知的是两个 Tensor

自己的各种想法都被卡在了这个 Tensor 和 None 上了。


TensorFlow 求助~

7 回复

我觉得你需要的是 SparseTensor.


我无法理解你的问题

我怎么觉得维度对不上啊? index: [?, 10],但是 result [?, 1000],怎么对的?

弱弱的问一下:result[index, :] = data, 这个是切片语法吗,index 是一个 Tensor 不是 int 类型没关系的吗

SparseTensor 卡在了第一维 None 上
想象一下 index 长度是 10,result 长度是 1000,除了 result[index]之外,其余值都是 0
是切片……是 Tensor ……但是 TensorFlow 不支持切片当左值

目前绕过方案,那个 None 是从 Dataset 里面带出来的,所以用dataset = dataset.apply(tf.contrib.data.batch_and_drop_remainder(batch_size)) 可以把 None 搞掉。之后用scatter_nd或者scatter_nd_update来搞。 的 SparseTensor 也是一个不错的选择。

楼主是自己做的项目还是工作用的

取下标请认准 gather scatter

回到顶部