В настоящее время я пытаюсь реализовать собственные грани с помощью numpy, но мне кажется, что это не так с моей 32-битной системой Linux (я использую 32-битную из-за ранее плохой поддержки flash и java в 64-битной версии, мой процессор 64-битный…), потому что при попытке умножить два вектора, чтобы получить матрицу (вектор * транспонированный вектор), numpy дает мне
ValueError: broadcast dimensions too large.
Я прочитал, что это из-за слишком мало памяти и может быть решено с помощью 64-битной. Есть ли способ обойти это? Матрица будет 528000 * 528000 элементов. Согласно моей статье эта большая матрица необходима для ковариационной матрицы (суммируя все эти огромные матрицы и затем деля ее на количество матриц).
Мой фрагмент кода выглядит следующим образом (я не понимаю, почему numpy все равно дает мне матрицу, потому что для моих знаний о матрице он выглядит неправильно (горизонтальный * вертикальный), но он работал с примерами меньшего размера):
tmp = []
for face in faces: # just an array of all face vectors (len = 528000)
diff = np.subtract(averageFace, face)
diff = np.asmatrix(diff)
tmp.append(np.multiply(diff, np.transpose(diff)))
C = np.divide(np.sum(tmp, axis=0), len(tmp))