x
是具有(16,10,4,25,53)形状的张量,y
的大小与x
相同。
mean
的形状为(25,53),jc
和ac
的大小均为(16,10,4)。
如何使用割炬功能优化以下表达式?
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
答案 0 :(得分:2)
我认为您正在沿着单例尺寸查看broadcasting的张量。
首先,您需要尺寸的 number 相同,因此,如果[ 0 10 50 9 50 80 20 30 51 170]
[ 9 1 240 20 0 69]
的形状为mean
,则(25,53)
的形状为mean[None, None, None, ...]
-您没有在基础数据中进行任何更改,但是维度的 number 现在为5而不是2,并且这些单例维度可以广播为(1, 1, 1, 25, 53)
和{{1 }}。
使用广播优化的代码如下:
x