piskvorky / gensim

Topic Modelling for Humans
https://radimrehurek.com/gensim
GNU Lesser General Public License v2.1
15.65k stars 4.37k forks source link

AttributeError: 'Word2Vec' object has no attribute 'trainables' #3013

Open santoshbs opened 3 years ago

santoshbs commented 3 years ago

Problem description

Trying to load a previously trained word2vec model

Steps/code/corpus to reproduce

from gensim.models import Word2Vec
f= 'word2vec_siz300_win5_min5_itr50_v1.model'
model= Word2Vec.load(f)
  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/word2vec.py", line 1141, in load
    model = super(Word2Vec, cls).load(*args, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/base_any2vec.py", line 1230, in load
    model = super(BaseWordEmbeddingsModel, cls).load(*args, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/base_any2vec.py", line 602, in load
    return super(BaseAny2VecModel, cls).load(fname_or_handle, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/utils.py", line 436, in load
    obj._load_specials(fname, mmap, compress, subname)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/utils.py", line 481, in _load_specials
    setattr(self, attrib, val)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/utils.py", line 1461, in new_func1
    return func(*args, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/base_any2vec.py", line 791, in syn1neg
    self.trainables.syn1neg = value

AttributeError: 'Word2Vec' object has no attribute 'trainables'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "<ipython-input-1-924733eaebe1>", line 3, in <module>
    model= Word2Vec.load(f)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/word2vec.py", line 1152, in load
    return load_old_word2vec(*args, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/deprecated/word2vec.py", line 169, in load_old_word2vec
    old_model = Word2Vec.load(*args, **kwargs)

  File "/anaconda3/envs/py37_gensim383/lib/python3.7/site-packages/gensim/models/deprecated/word2vec.py", line 1627, in load
    for v in model.wv.vocab.values():

AttributeError: 'EuclideanKeyedVectors' object has no attribute 'vocab'

Versions

Linux-5.8.0-29-generic-x86_64-with-debian-bullseye-sid
Python 3.7.9 (default, Aug 31 2020, 12:42:55) 
[GCC 7.3.0]
Bits 64
NumPy 1.19.4
SciPy 1.5.3
gensim 3.8.3
FAST_VERSION 0
gojomo commented 3 years ago

It looks like this word2vec_siz300_win5_min5_itr50_v1.model may have been trained using the prerelease gensim-4.0.0beta, before you tried to load it into a gensim-3.8.3 environment.

Taking models saved from later versions of Gensim, and loading them into older versions, is not supported.