无法解决python numpy零中的内存错误

时间:2018-12-09 12:47:07

标签: python python-3.x numpy

我在下一行中遇到内存错误-

Z = np.zeros((m, n_H, n_W, n_C))

值是

m = 982, n_H = 400, n_W = 400, n_C = 3

请帮助。 这是我正在处理的代码-

def conv_forw(A_prev, W, b, hparameters):      
    (m, n_H_prev, n_W_prev, n_C_prev) = A_prev.shape
    (f, f, n_C_prev, n_C) = W.shape
    stride = hparameters['stride']
    pad = hparameters['pad']
    n_H = int((n_H_prev - f + 2 * pad) / stride) + 1
    n_W = int((n_W_prev - f + 2 * pad) / stride) + 1
    Z = np.zeros((m, n_H, n_W, n_C))
    A_prev_pad = zero_pad(A_prev, pad)

    for i in range(m):                                 
        a_prev_pad = A_prev_pad[i]                     
        for h in range(n_H):                           
            for w in range(n_W):                       
                for c in range(n_C):                   
                    vert_start = h * stride
                    vert_end = vert_start + f
                    horiz_start = w * stride
                    horiz_end = horiz_start + f
                    a_slice_prev = a_prev_pad[vert_start:vert_end, horiz_start:horiz_end, :]
                    Z[i, h, w, c] = conv_single_layer(a_slice_prev, W[...,c], b[...,c])

    assert(Z.shape == (m, n_H, n_W, n_C))
    cache = (A_prev, W, b, hparameters)    
    return Z, cache

这是错误-

    ---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-12-346685ab9b7c> in <module>()
----> 1 (Z1, cache1) = conv_forw(X, W, b, hparameters)

<ipython-input-4-64ab3cc0c83f> in conv_forw(A_prev, W, b, hparameters)
      6     n_H = int((n_H_prev - f + 2 * pad) / stride) + 1
      7     n_W = int((n_W_prev - f + 2 * pad) / stride) + 1
----> 8     Z = np.zeros((m, n_H, n_W, n_C))
      9     A_prev_pad = zero_pad(A_prev, pad)
     10 

MemoryError:

1 个答案:

答案 0 :(得分:0)

您的内存不足,因为您要创建一个包含982个数组的数组,每个数组包含400个数组,每个数组包含400个数组,每个数组包含3个零。那是471360000个字段。