Per the notes about migrating to Gensim-4 (<
https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4#5-no-more-init_sims>), in most cases `init_sims()` is no longer necessary. In most cases where it was called, it can now just *not* be called. (Calling it yourself with `replace=True` no longer offers any notable RAM savings, but does destroy raw magnitude information that could still be useful in many applications.)
If you were already using `.get_normed_vectors()`, it will still work, but as the migration notes warn, now, each call creates the full array anew - so older code that was considering that call cheap/instant may need updating to retain the calculated array itself for reuse, rather than count on the model to always provide it.
But if you weren't already using `.get_normed_vectors()`, there's no need to add it now. And in neither Gensim-3.8 nor Gensim 4.0 would it be a good idea to clobber the value of your `w2v_model` variable with the return-value of `get_normed_vectors()`, as that method returns a big `numpy.ndarray`, not a `Word2Vec` or `KeyedVectors` instance with their convenience methods.
If for some particular reason you really do need to *destructively* change the vectors inside a Gensim `KeyedVectors` to all be unit-normalized:
* `w2v_model.wv.init_sims(replace=True)` will still work in Gensim-4.0, though it will generate a deprecation warning.
However, it's rare to really want/need to do that. And once you do, it won't make sense to save/train the original enclosing `Word2Vec` model. (So, if you've really moved a model to a lookup-vectors-only role, and further applied this destructive mutation, it'd be clearer to pull the `KeyedVectors` alone out of the `w2v_model` – that is, its `w2v_model.wv` object – and save/load/operate-on that object, without the potential confusion/bugs of keeping a full `Word2Vec` model around after you've fouled its raw weights.
- Gordon