2 votes

Stockage/chargement d'un énorme tableau numpy avec moins de mémoire

J'ai un tableau numpy de forme (20000, 600, 768). J'ai besoin de le stocker, afin de pouvoir le recharger plus tard dans mon code. Le principal problème est l'utilisation de la mémoire lorsque vous le chargez à nouveau. Je n'ai que 16 Go de RAM.

Par exemple, j'ai essayé le cornichon. Quand il charge tout, il ne me reste presque plus de mémoire pour faire autre chose. Surtout pour entraîner le modèle.

J'ai essayé d'écrire et de recharger avec hdf5 (h5py). Juste un petit morceau (1000, 600, 768). Mais il semble que cela "mange" encore plus de mémoire.

J'ai aussi essayé le csv C'est tout simplement un non-non. Cela prend TROP de temps pour écrire les données.

Je serais reconnaissant pour toute suggestion sur la façon dont je pourrais stocker mon tableau de sorte que lorsque je le chargerais à nouveau, il ne prendrait pas autant de mémoire.

P.S. Les données que je stocke sont des représentations vectorielles de textes que j'utilise ensuite pour l'entraînement de mon modèle.

0voto

Nikaidoh Points 624

Je pense que vous pouvez faire beaucoup de choses.

Tout d'abord, vous pouvez modifier le format des données pour les stocker de différentes manières :

  • dans un fichier dans votre mémoire secondaire pour être lu itérativement (vider un objet python sur la mémoire secondaire n'est pas efficace. Vous devez trouver un meilleur format. Par exemple un fichier texte dans lequel les lignes sont les lignes de la matrice).
  • ou dans une base de données. Toujours pour rendre les données lisibles de manière itérative.

Deuxièmement, et c'est le plus important, vous devez changer votre algorithme . Si vous ne pouvez pas faire tenir toutes les données en mémoire, vous devez utiliser d'autres types de méthodes, dans lesquelles vous utilisez des lots de données au lieu de toutes les données.

Pour l'apprentissage automatique, par exemple, il existe de nombreuses méthodes permettant de mettre à jour le modèle de manière incrémentielle avec des lots de données.

Troisièmement, il existe des méthodes qui vous permettent réduire la dimensionnalité de votre ensemble de formation . Par exemple, en utilisant des méthodes comme l'ACP, la sélection de caractéristiques, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X