J'essaie actuellement d'implémenter les faces propres avec numpy, mais il semble avoir des difficultés avec mon système Linux 32bit (j'utilise 32bit à cause du mauvais support de flash et java en 64bit, mon processeur est 64bit ), car lorsque j'essaie de multiplier deux vecteurs pour obtenir une matrice (vecteur * vecteur transposé) numpy me donne
ValueError: broadcast dimensions too large.
J'ai lu que ce problème était dû à un manque de mémoire et qu'il pouvait être résolu par l'utilisation d'un système 64 bits. Existe-t-il un moyen de contourner ce problème ? La matrice serait composée de 528000*528000 éléments. D'après mon document, cette grande matrice est nécessaire pour la matrice de covariance (en additionnant toutes ces énormes matrices et en les divisant par le nombre de matrices).
Mon code ressemble à ceci (je ne comprends pas pourquoi numpy me donne une matrice de toute façon, parce que pour ma connaissance de la matrice, elle semble dans le mauvais sens (horizontal*vertical), mais cela a fonctionné avec des exemples de taille plus petite) :
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))