Pytorch 未找到有效的Pytork广播

Pytorch 未找到有效的Pytork广播,pytorch,array-broadcasting,Pytorch,Array Broadcasting,我的实现中有以下代码片段。有一个包含3个循环的嵌套for循环。在主代码中,原始系统的三维坐标作为点的一维矢量进行叠加,对于具有坐标(x,y,z)的点,采样单元将类似于 Predictions =[...x,y,z,...] 然而,对于我的计算,我需要重塑预测向量为2D矩阵,预测重塑[I][0]=x,预测重塑[I][1]=y预测重塑[I][2]=z 其中i是矩阵中的任何样本行prediction\u reformed。 下面的代码显示了逻辑 prediction_reshaped=torch.z

我的实现中有以下代码片段。有一个包含3个循环的嵌套for循环。在主代码中,原始系统的三维坐标作为点的一维矢量进行叠加,对于具有坐标(x,y,z)的点,采样单元将类似于

Predictions =[...x,y,z,...]
然而,对于我的计算,我需要重塑预测向量为2D矩阵,预测重塑[I][0]=x,预测重塑[I][1]=y预测重塑[I][2]=z 其中i是矩阵中的任何样本行
prediction\u reformed
。 下面的代码显示了逻辑

prediction_reshaped=torch.zeros([batch,num_node,dimesion])
    for i in range(batch):
        for j in range(num_node):
            for k in range(dimesion):
                prediction_reshaped[i][j][k]=prediction[i][3*j+k]
他们有没有有效的广播来避免这三个嵌套循环?它减慢了我的代码速度。改造不符合我的目的。
代码是使用Pytork实现的,所有矩阵都是Pytork张量,但任何numpy解决方案也会有所帮助。

这应该可以完成这项工作

导入火炬
批次=2
节点数=4
x=火炬.rand(批次,数量节点*3)
#张量([[0.8076,0.2572,0.7100,0.4180,0.6420,0.4668,0.8915,0.0366,0.5704,
#          0.0834, 0.3313, 0.9080],
#         [0.2925, 0.7367, 0.8013, 0.4516, 0.5470, 0.5123, 0.1929, 0.4191,  0.1174,
#          0.0076, 0.2864, 0.9151]])
x=x.重塑(批处理,数量节点,3)
#张量([[0.8076,0.2572,0.7100],
#         [0.4180, 0.6420, 0.4668],
#         [0.8915, 0.0366, 0.5704],
#         [0.0834, 0.3313, 0.9080]],
#
#        [[0.2925, 0.7367, 0.8013],
#         [0.4516, 0.5470, 0.5123],
#         [0.1929, 0.4191, 0.1174],
#         [0.0076, 0.2864, 0.9151]]])