Pytorch 如何使用torch提供的功能优化5层环路?

Pytorch 如何使用torch提供的功能优化5层环路?,pytorch,vectorization,Pytorch,Vectorization,x是形状为(16,10,4,25,53)的张量,y的大小与x的大小相同 mean的形状是(25,53),jc和ac的大小都是(16,10,4) 如何使用torch函数优化以下表达式 for k in range(x.size()[0]): for s in range(x.size()[1]): for u in range(x.size()[2]): for i in range(x.size()[3]): for

x
是形状为(16,10,4,25,53)的张量,
y
的大小与
x
的大小相同
mean
的形状是(25,53),
jc
ac
的大小都是(16,10,4)

如何使用torch函数优化以下表达式

for k in range(x.size()[0]):
    for s in range(x.size()[1]):
        for u in range(x.size()[2]):
            for i in range(x.size()[3]):
                for j in range(x.size()[4]):
                    num1 += (x[k][s][u][i][j] - mean[i][j] - jc[k][s][u]) * (y[k][s][u][i][j] - mean[i][j] - ac[k][s][u])
                    num2 += (y[k][s][u][i][j] - mean[i][j] - jc[k][s][u]) ** 2
                    num3 += (y[k][s][u][i][j] - mean[i][j] - ac[k][s][u]) ** 2

我想你是在看你的张量沿单态维度。
首先,您需要维度的数量相同,因此如果
mean
是形状
(25,53)
,那么
mean[None,None,None,…]
是形状
(1,1,1,25,53)
-您没有更改基础数据中的任何内容,但是维度的数量现在是5,而不是2,并且这些单一维度可以广播到相应的
x
y
维度

使用广播的优化代码如下所示:

num1=((x-均值[None,None,None,…]-jc[…,None,None])*(y-均值[None,None,None,…]-ac[…,None,None])。求和()
num2=((y-平均值[None,None,None,…]-jc[…,None,None])**2.sum()#这里不应该是x吗?
num3=((y-平均值[无,无,无,…]-ac[…,无,无])**2).总和()

num2
在其表达式中应该有
x
而不是
y