Не удалось разрешить ошибку памяти в нулях python 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:

Нет ошибок в Python 3.7, numpy 1.15.4

user1889297 09.12.2018 13:54

Не могли бы вы вставить фактическую ошибку, которую вы видите? Кроме того, сколько у вас памяти?

lxop 09.12.2018 13:56

Когда я использую функцию в следующей строке (Z1, cache1) = conv_forw(X, W, b, hparameters), у меня возникают ошибки.

Rishabh Kumar 09.12.2018 13:59

Добавлена ​​рассматриваемая ошибка

Rishabh Kumar 09.12.2018 14:00

@RishabhKumar, пожалуйста, вставьте его в вопрос о форматировании новой строки ... Это не читается так

M. Volf 09.12.2018 14:01

@ M.Volf добавил рассматриваемую ошибку

Rishabh Kumar 09.12.2018 14:05

@lxop У меня 8 ГБ ОЗУ

Rishabh Kumar 09.12.2018 14:06

Вы пропустили конец отчета об ошибке

lxop 09.12.2018 14:12

@lxop вот и вся ошибка

Rishabh Kumar 09.12.2018 14:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
9
571
1

Ответы 1

У вас заканчивается память, потому что вы создаете массив из 982 массивов, каждый из которых содержит 400 массивов, каждый из которых содержит 400 массивов, каждый из которых содержит 3 нуля. Это 471360000 полей.

Ну, у меня нет опыта работы с numpy (я только что нашел документы numpy.zeroes), и я действительно не понимаю, что делает ваш код.

M. Volf 09.12.2018 13:59

Другие вопросы по теме