更新时间:2021-03-18 GMT+08:00
分享

功能描述

ScatterNdAdd算子通过对输入数据中的单个值或切片应用稀疏算法,从而得到输出数据。

该算子具有var、indices和updates三个关键输入。其功能为使用updates更新var中indices指定位置的数据,即在var指定位置的数据上加上update的值。

三个输入之间的关系分别为:

  • 张量var的shape的维度为P。
  • indices是整数张量,shape的维度(rank)为Q,索引为ref,最后一维的元素个数为K(0<K<=P),shape为[d_0, ..., d_{Q-2}, K]。
  • 张量updates的shape的维度(rank)为Q-1+P-K,shape为[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]]。

例子:

如上面示例所示,indices总共有4个index,每个index有两个数表示一个二维坐标,指示var中所要更新的位置。

第一个index(0, 0)表示更新的var的起始位置为(0, 0, 0)到(0, 0, 3)总共四个数。updates的第一个分片为(1, 1, 1, 1),所以更新完之后的output的结果为(2, 2, 2, 2)。

第二个index(0, 1)表示更新的var的起始位置为(0, 1, 0)到(0, 1, 3)总共四个数。updates的第二个分片为(2, 2, 2, 2),所以更新完之后的output的结果为(3, 3, 3, 3)。

第三个index(0, 2)表示更新的var的起始位置为(0, 2, 0)到(0, 2, 3)总共四个数。updates的第三个分片为(3, 3, 3, 3),所以更新完之后的output的结果为(4, 4, 4, 4)。

第四个index(1, 1)表示更新的var的起始位置为(1, 1, 0)到(1, 1, 3)总共四个数。updates的第四个分片为(4, 4, 4, 4),所以更新完之后的output的结果为(5, 5, 5, 5)。

分享:

    相关文档

    相关产品

close