Python + numpy + opencv прекращает выполнение при первом умножении матрицы - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть код, который выполняет несколько операций умножения матриц, и он перестает работать, как только он сталкивается с первым умножением матриц.

Htop показывает, что большинство ядер моего процессора работают на 100%.

Я пытался запустить python -m trace --trace filename.py, но это ни к чему не привело. Последние 4 строки трассировки:

wgan.py(127):             output = self.layers[i].forward(output)
 --- modulename: wgan, funcname: forward
wgan.py(65):         self.x = x
wgan.py(66):         return x @ self.W + self.b.T

, и здесь команда зависает, даже не реагируя на ctrl+c, чтобы убить.

Я использую nixos 20.03, numpy 1.18.1, python 3.7.6, opencv 4.1.2
Умноженные матрицы имеют размеры 512 x 64 и 64 x 784.
Объем доступной оперативной памяти на машине составляет 16 ГБ, из которых на данный момент используется только около 200 МБ.

Любая помощь будет чрезвычайно признательна! Заранее спасибо.

ОБНОВЛЕНИЕ 1
Перезагрузка системы, похоже, устранила проблему. Но после запуска кода несколько раз он снова застрял где-то посередине. После убийства python и повторного запуска трассировки программа зависла при первом умножении матрицы.
Теперь я полностью сбит с толку.

ОБНОВЛЕНИЕ 2
Вот код что не получается:

import numpy as np
import cv2

if __name__ == "__main__":
    i = 0
    while(True):
        mat1 = np.random.standard_normal((1000,1000))
        mat2 = np.random.standard_normal((1000,1000))
        mat = mat1 @ mat2
        i+=1
        print(i, mat[4,4])

похоже, что удаление строки import cv2 заставляет ее работать, но мне нужна библиотека в моем основном коде. Это похоже на проблему взаимодействия opencv и numpy.

...