2017-07-19 4 views
1

J'essaye d'exécuter la bibliothèque de doc2vec du paquet de gensim. Mon problème est que quand je suis une formation et de sauver le modèle le fichier modèle est assez grand (2,5 Go) J'ai essayé d'utiliser cette ligne:Gensim Doc2Vec générant un fichier énorme pour le modèle

model.estimate_memory() 

Mais il n'a pas changé quoi que ce soit. J'ai aussi essayé de changer max_vocab_size pour diminuer l'espace. Mais il n'y avait pas de chance. Quelqu'un peut-il m'aider avec cette affaire?

+0

Rien à redire ici, les plongées de documents sont tout simplement énormes. –

+2

Je vote pour clore cette question hors sujet parce que ce n'est pas un problème qui peut être résolu, juste une mauvaise compréhension de la façon dont la bibliothèque utilisée fonctionne. 2.5G est déjà sur le petit côté pour cela. –

+0

Je ne reçois pas l'objection. Quelqu'un ne comprend pas les besoins en ressources d'une tâche de programmation, ce qui génère une question. Expliquer le fonctionnement sous-jacent de l'algorithme/bibliothèque peut résoudre le malentendu, et il existe d'autres options de codage pour atteindre les objectifs sous-jacents. Ceux-ci constituent une réponse utile à une question suffisamment précise. – gojomo

Répondre

1

Les modèles Doc2Vec peuvent être volumineux. En particulier, tous les vecteurs de mots utilisés utiliseront 4 octets par dimension, multiplié par deux couches du modèle. Ainsi, un modèle 300 dimension avec un vocabulaire 200000 mot utilisera seulement pour le tableau des vecteurs lui-même:

200,000 vectors * 300 dimensions * 4 bytes/float * 2 layers = 480MB 

(. Il y aura une charge supplémentaire pour le dictionnaire stockant des informations vocabulaire)

Tous les vecteurs doc-WILL utilise également 4 octets par dimnsion. Donc, si vous formez un des vecteurs pour un million de doc-tags, le modèle utilisera seulement pour le tableau doc-vecteurs:

1,000,000 vectors * 300 dimensions * 4 bytes/float = 2.4GB 

(Si vous utilisez des balises de chaînes arbitraires pour nommer les vecteurs de doc, il » Pour utiliser moins de mémoire lors du chargement (ce qui entraînera également un fichier de stockage plus petit), vous pouvez utiliser un vocabulaire plus petit, former moins de doc-vecs ou utiliser une taille de vecteur plus petite. Si vous avez seulement besoin du modèle pour certaines fins, il peut y avoir d'autres parties que vous pouvez jeter après l'entraînement - mais cela nécessite une connaissance du code interne du modèle/code source et de vos besoins spécifiques, et il en résultera dans un modèle qui est cassé (et susceptible de lancer des erreurs) pour de nombreuses autres opérations habituelles.