python3下使Word2Vec每次執行結果一致

2021-09-25 21:13:05 字數 633 閱讀 8158

我們經常使用gensim的word2vec來進行單詞轉向量,但是這個包存在乙個問題,每次訓練結果都不同,這就導致了特徵無法復現。

查閱word2vec的官方文件,在seed引數**可以發現這樣的解釋:

在python2中,只要設定seed(隨機種子)引數,以及worker=1即可保證每次訓練一致,但python3還需要設定pythonhashseed引數,

經驗證使用os.environ['pythonhashseed '] =『**'無法起作用,必須修改系統環境變數。

python的字串hash演算法並不是直接遍歷字串每個字元去計算hash,而是會有乙個secret prefix和乙個secret suffix,可以認為相當於是給字串加鹽後做hash,可以規避一些規律輸入的情況。

顯然這個secret前字尾的值會直接影響計算結果,而且它有乙個啟動時隨機生成的機制,只不過,在2.x版本中,這個機制預設是關閉的,前字尾每次啟動都設定為0,除非你改了相關環境變數來要求隨機,而在3.x中修改了預設行為,如果你不配置環境變數,則預設是隨機乙個前字尾值,這樣每次啟動都會不同,這個功能有一定的安全性上的考慮,可以讓攻擊者難以**內建的set或者dict的一些行為。

這個環境變數就是pythonhashseed,配置方法如下:

TensorFlow 讀書筆記 Word2Vec

由於暫時不會深入接觸nlp相關領域,所以本章的內容就不過多涉及了,以後會進行學習,應該。word2vec又稱word embeddings,中文稱為 詞向量 詞嵌入 等。影象和語音天然可以表示為稠密向量,自然語言處理領域在word2vec之前都是使用離散符號,如 中國 表示為5178,北京 表示為3...

Python3 讀取Word檔案

我的環境,windows10,python3.6.3 查詢了很多有關資料,發現都是python2版本操作word檔案的,所以就寫了這篇短小的文章。一 安裝 docx pip install docx 完了之後,匯入 import docx 發現報錯 modulenotfounderror no mo...

python2與python3迭代器的使用

在實驗樓上學習python3的課程,在迭代器一節,怎麼輸出都不正確,錯誤提示為 traceback most recent call last file line 1,in next c typeerror counter object is not an iterator 段如下 class co...