input:
[[1. 2. 3.]
[4. 5. 6.]
[7. 8. 9.]]
index:
[0 0 0]
updates:
[[11. 12. 13.]
[14. 15. 16.]
[17. 18. 19.]]
用法
paddle.fluid.layers.scatter(input, index, updates, overwrite=False)
output:
[[42. 45. 48.]
[ 4. 5. 6.]
[ 7. 8. 9.]]
问题 1
output[1] 和 output[2] 都保留了 input[1] 和 input[2] 的值,但是 output[0] 却是 updates[0] + updates[1] + updates[2],没有加 input[0]。
问题2
input 和 updates 的维度必须完全一致?我尝试用 input: [3, 3] 和 updates: [4, 3] 进行计算,但是报错:
Enforce failed. Expected ctx->GetInputDim("Updates")[0] == ctx->GetInputDim("Ids")[0], but received ctx->GetInputDim("Updates")[0]:4 != ctx->GetInputDim("Ids")[0]:3.
Updates and Ids should have same batch-size. at [/paddle/paddle/fluid/operators/scatter_op.cc:44]
很多时候需要将两个长度不一致的矩阵 scatter 到一起。接口又要求 index rank==1,进而不能将 input 和 updates 扩一维进行操作...
2条答案
按热度按时间b1uwtaje1#
嗯嗯 是有这个问题的,我这边会尽快修复。
50pmv0ei2#
修复是两个问题都修复还是修复某一个问题?