2016-10-09 8 views
0

Это структура я имею дело с:Рассол нагрузка: ImportError: Нет модуль с именем doc2vec_ext

src/ 
    processing/ 
     station_level/ 
      train_paragraph_vectors.py 
    doc2vec_ext.py 
    word_embeddings_station_level.py 

Я тренировался и сохранили модель в word_embeddings_station_level.py так:

from src.doc2vec_ext import WeightedDoc2Vec 

# ... 

model = WeightedDoc2Vec(
    # ... 
) 

train(model, vocab, station_sentences, num_epochs) 

# Saving the model -> pickles it 
model.save(open(model_file, "w")) 

Это пока не работает. Тем не менее, я хочу, чтобы загрузить эту модель в train_paragraph_vectors.py так:

import sys 
from src import doc2vec_ext 
sys.modules["doc2vec_ext"] = doc2vec_ext 

if __name__ == "__main__": 
# ... 
    model = doc2vec_ext.WeightedDoc2Vec.load(station_level_sentence_vectors) 

, но я получаю:

Traceback (most recent call last): 
    File "E:/python/kaggle/seizure_prediction/src/processing/station_level/train_paragraph_vectors.py", line 57, in <module> 
    model = doc2vec_ext.WeightedDoc2Vec.load(station_level_sentence_vectors) 
    File "C:\Python27\lib\site-packages\gensim\models\word2vec.py", line 1684, in load 
    model = super(Word2Vec, cls).load(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\gensim\utils.py", line 248, in load 
    obj = unpickle(fname) 
    File "C:\Python27\lib\site-packages\gensim\utils.py", line 911, in unpickle 
    return _pickle.loads(f.read()) 
ImportError: No module named doc2vec_ext 

doc2vec_ext.py

Здесь вы можете увидеть, что я просто наследуйте от класса gensim.models.Doc2Vec и сделайте что-нибудь:

class WeightedDoc2Vec(Doc2Vec): 

    def __init__(self, dm=1,window=5, f_size=0, size=100, min_count=1, negative=0, dbow_words=1, alpha=0.015, workers=8, seed=42, dm_weighted=False, dm_stacked=False): 
     Doc2Vec.__init__(self, 
      # Constructor arguments .. 
      ) 

     # ... 

Я не знаю, в чем проблема. Я попытался сделать sys.modules[], но он все еще не работает должным образом.

Как загрузить мою сохраненную модель?


Важно:

Я заметил, что я даже не могу загрузить из того же модуля. Если я попытаюсь загрузить модель в файл, где она была создана (здесь word_embeddings_station_level.py), она все еще не работает, давая мне ту же ошибку.

+0

Есть ли шанс, что вы используете две разные среды python? Или, может быть, вы запускаете скрипты из разных мест, чтобы находить некоторые модули в текущем каталоге, но не находить их, когда вы находитесь вне этого каталога. Это просто догадки. – daveydave400

+0

Также у вас есть '__init __. Py' файлы в вашей структуре каталогов для каждой директории. В противном случае пакет может не загружать модули должным образом. – daveydave400

+0

@ daveydave400 Ну, чтобы убедиться, что я не слишком много запутался, я добавил строку, чтобы загрузить модель в том же скрипте, который ее создает. Я уверен, что я использую тот же интерпретатор Python, и теперь я убедился, что я запускаю его из того же места. :/ – displayname

ответ

0

При сохранении и загрузке двоичных данных, таких как рассол, вам необходимо использовать двоичный режим, а не текстовый режим.

model.save(open(model_file, "wb")) # 'b' for binary