TensorFlow 求助~

2018-01-16 14:57:28 +08:00
 jinyu121

现在有两个 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 上了。

2924 次点击
所在节点    Python
6 条回复
ivechan
2018-01-16 15:38:23 +08:00
我觉得你需要的是 SparseTensor.
ipwx
2018-01-16 15:56:49 +08:00
我怎么觉得维度对不上啊? index: [?, 10],但是 result [?, 1000],怎么对的?
qce7
2018-01-16 15:56:51 +08:00
弱弱的问一下:result[index, :] = data, 这个是切片语法吗,index 是一个 Tensor 不是 int 类型没关系的吗
jinyu121
2018-01-16 17:02:22 +08:00
@ivechan SparseTensor 卡在了第一维 None 上
@ipwx 想象一下 index 长度是 10,result 长度是 1000,除了 result[index]之外,其余值都是 0
@qce7 是切片……是 Tensor ……但是 TensorFlow 不支持切片当左值

目前绕过方案,那个 None 是从 Dataset 里面带出来的,所以用`dataset = dataset.apply(tf.contrib.data.batch_and_drop_remainder(batch_size))` 可以把 None 搞掉。之后用`scatter_nd`或者`scatter_nd_update`来搞。 @ivechan 的 SparseTensor 也是一个不错的选择。
ballshapesdsd
2018-01-16 17:17:55 +08:00
楼主是自己做的项目还是工作用的
rogerchen
2018-01-16 18:52:34 +08:00
取下标请认准 gather scatter

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/423330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX