优化python循环numpy

优化python循环numpy,python,numpy,machine-learning,vectorization,conv-neural-network,Python,Numpy,Machine Learning,Vectorization,Conv Neural Network,我正在手动实现神经网络的卷积层(要求),速度非常慢(每个实验12小时?) 不幸的是,我在python或numpy方面不是很好,我不知道如何摆脱导致这种情况的for循环 我曾尝试将numba与@jit(nopython=true)注释一起使用,但速度仍然非常慢。有人能帮我以优化的方式重写这个方法吗?或者至少给我指出正确的方向 我提到我必须使用python,所以没有办法摆脱它 @jit(nopython=True) def sum1(sliced, kernel, bias): retu

我正在手动实现神经网络的卷积层(要求),速度非常慢(每个实验12小时?)

不幸的是,我在python或numpy方面不是很好,我不知道如何摆脱导致这种情况的for循环

我曾尝试将numba与@jit(nopython=true)注释一起使用,但速度仍然非常慢。有人能帮我以优化的方式重写这个方法吗?或者至少给我指出正确的方向

我提到我必须使用python,所以没有办法摆脱它

@jit(nopython=True)
def sum1(sliced, kernel, bias):
      return np.sum(sliced*kernel) + bias

@jit(nopython=True)
def getfprop1(inputs, kernels, biases, noinputs, nooutputsc, kdim1, kdim2, outdim1, outdim2):
   outputs = zero(noinputs, nooutputsc, outdim1, outdim2)

   for i in range (noinputs):
        input = inputs[i, :, :, :]
        for h in range(outdim1):
            for w in range(outdim2):
                for c in range(nooutputsc):
                    vert_start = h
                    vert_end = h + kdim1
                    horiz_start = w
                    horiz_end = w + kdim2
                    sliced = input[:, vert_start:vert_end, horiz_start:horiz_end]
                    outputs[i, c, h, w] = sum1(sliced, kernels[c,:,:,:], biases[c])
return outputs

不使用内置卷积函数的任何原因?我想这会更合适-他们不允许我们:(问题似乎是
np.sum(
),你需要“手工”这也是。通过内联
sum1
而不是将其作为函数调用,您可能会获得一些好处,并避免在4个级别的for循环中进行不必要的分配。这在C中无关紧要,但在Python中可以。我这样做是因为在numba中,他们建议使用jit来修饰我们正在使用的任何函数1.3.2节中没有使用的任何原因内置卷积函数-?我想这会更合适-他们不允许我们:(问题似乎是
np.sum(
),你需要“手工”这也是。通过内联
sum1
而不是将其作为函数调用,您可能会获得一些好处,并避免在4个级别的for循环中进行不必要的分配。这在C中无关紧要,但在Python中可以。我这样做是因为在numba中,他们建议使用jit来修饰我们在第1.3.2节中使用的任何函数