У меня есть код, который выполняет несколько операций умножения матриц, и он перестает работать, как только он сталкивается с первым умножением матриц.
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.