1.5.0.post87-gpu scatter 函数 overwrite=False,没有累加 input 的值
Created by: Dabulv
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 扩一维进行操作...