如何在PyTorch中使用散射()函数

  介绍

如何在PyTorch中使用散射()函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

散射()和scatter_()的作用是一样的,只不过散射()不会直接修改原来的张量,而scatter_()会

PyTorch中,一般函数加下划线代表直接在原来的张量上修改

散射(暗淡、索引src)的参数有3个

<李>

暗:沿着哪个维度进行索引

<李>

指数:用来分散的元素索引

<李>

src:用来分散的源元素,可以是一个标量或一个张量

这个散射可以理解成放置元素或者修改元素

简单说就是通过一个张量src来修改另一个张量,哪个元素需要修改,用src中的哪个元素来修改由昏暗和指数决定

官方文档给出了三维张量的具体操作说明,如下所示

自我(指数[我][j] [k]] [j] [k],=, src[我][j] [k], #, if  dim ==0   自[我][指数[我][j] [k]] [k],=, src[我][j] [k], #, if  dim ==1   自[我][j][指数[我][j] [k]],=, src[我][j] [k], #, if  dim ==,

例子:

x =, torch.rand (2), 5)      #张量([[0.1940,0.3340,0.8184,0.4269,0.5945),   #,,,,(0.2078,0.5978,0.0074,0.0943,0.0266]])      torch.zeros (3, 5) .scatter_ (0,, torch.tensor ([[0,, 1,, 2,, 0, 0),, (2,, 0, 0, 1,, 2]]),, x)      #张量([[0.1940,0.5978,0.0074,0.4269,0.5945),   #,,,,(0.0000,0.3340,0.0000,0.0943,0.0000),   #,,,,(0.2078,0.0000,0.8184,0.0000,0.0266]])

具体地说,我们的指数是火炬。张量([[0 1 2 0 0],[2 0 0 1 2]]),一个二维张量、下面用图简单说明

我们是2维张量,一开始进行自我美元[指数[0][0]][0]美元,其中美元指数[0][0]美元的值是0,所以执行自我美元[0][0]=x [0] [0]=0.1940

自我美元指数[我][j]] [[j]=src美元[我][j] .

如何在PyTorch中使用散射()函数

再比如美元自我(指数[1][0]][0]美元,其中美元指数[1][0]美元的值是2,所以执行自我美元[2][0]=x [1] [0]=0.2078 $

如何在PyTorch中使用散射()函数

src除了可以是张量外,也可以是一个标量

例子:

torch.zeros (3, 5) .scatter_ (0,, torch.tensor ([[0,, 1,, 2,, 0, 0),, (2), 0, 0, 1,, 2]]),, 7)      #张量([[7。,,7,,7。,,7。,,7。),   #,,,,(0。,,7,,0。,,7。,,0),   #,,,,(7。,,0。,,7。,,0。,,7。]]

散射()一般可以用来对标签进行> class_num =10   时间=batch_size  4   时间=label  torch.LongTensor (batch_size, 1) .random_ (), % class_num   #张量([[6],   #,,,,[0],   #,,,,[3],   #,,,,[2]])   torch.zeros (batch_size, class_num) .scatter_(1),标签,,1)   #张量([[0。,,0。,,0。,,0。,,0。,,0。,,1,,0。,,0。,,0),   #,,,,(1。,,0。,,0。,,0。,,0。,,0。,,0。,,0。,,0。,,0),   #,,,,(0。,,0。,,0。,,1,,0。,,0。,,0。,,0。,,0。,,0),   #,,,,(0。,,0。,,1,,0。,,0。,,0。,,0。,,0。,,0。,,0。]])

看完上述内容,你们掌握如何在PyTorch中使用散射()函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

如何在PyTorch中使用散射()函数