![](/img/trans.png)
[英]FastText: AttributeError: type object 'FastText' has no attribute 'reduce_model'
[英]Is there a way to pickle a fasttext model/object?
我剛剛訓練了我的fasttext model 並且我正在嘗試使用引腳https://pypi.org/project/pins/和香根草Z5E056C500A1C4B6A7110B50D80A1C4B6A7110B50D807BADE5Z://pypi.org/project/pins/和控制版本的香根草 Z5E056C500A1C4B6A7110B50D80A1C4B6A7BADE5Z///pi.orgproject
但是,要做到這一點,我需要腌制fasttext 對象/模型。 這就是我掙扎的地方。
PS:當我將 fasttext model 保存到磁盤時,它保存為.bin或二進制文件。 這是使用引腳時代碼的外觀:
import pins
import fasttext
board = pins.board_temp(allow_pickle_read = True)
board.pin_write(ft_model, "ft_model", type="joblib") #ft_model is a fasttext model I already trained
我運行這些 ^ 行得到的錯誤代碼是: cannot pickle 'fasttext_pybind.fasttext' object
當我使用香根草時也會發生同樣的情況:
import vetiver
import fasttext
import pins
class FasttextHandler(BaseHandler):
def __init__(self, model, ptype_data):
super().__init__(model, ptype_data)
handled_model = FasttextHandler(model = ft_model, ptype_data = None )
vetiver_fasttext_model = vetiver.VetiverModel(model = handled_model, model_name = "model")
ft_board = board_temp(allow_pickle_read = True)
vetiver.vetiver_pin_write(ft_board, vetiver_fasttext_model)
同樣,我得到的這段代碼 ^ 的錯誤代碼是cannot pickle 'fasttext_pybind.fasttext' object
我感謝任何幫助或任何提示,
非常感謝你!
賈馬爾
官方的fasttext
快速文本模塊依賴於 Facebook 的非 Python 實現和存儲格式——所以這很可能是您遇到的抗泡菜障礙。
如果您不使用--supervised
分類模式,則完整的 Python 和 Cython Gensim 庫包括一個FastText
model class ,它可以執行除該模式之外的所有操作。 它還可以加載/保存 Facebook 格式的模型。
雖然 Gensim 自己的本機.save()
操作使用酸洗和原始 numpy 數組文件的混合,但出於歷史和效率的原因,它的模型也應該能夠完成酸洗(如果使用最近的 Python 否則你的項目可以承受全部開銷)。
如果您仍然需要fasttext
中的功能(如監督模式),您可能必須使用不可腌制的部分包裝其原生對象,並使用攔截腌制序列化嘗試的代理對象,並以某種方式利用其自定義格式來模擬腌制能力。
例如,在序列化時,要求被包裝的 object 以通常的方式寫入自身,然后將整個原始本機文件作為包裝器 object 的一個序列化原始數據字段進行腌制序列化。 在反序列化時,顯式獲取巨大的原始文件字段,將其寫入磁盤,然后使用包裝類的本機負載。
它會相當緩慢和丑陋,並且在兩種序列化格式之間編組期間涉及大量額外的臨時可添加 memory 使用 - 但也許如果您別無選擇,並且您的系統對延遲/內存使用有足夠的容忍度,它可以讓您在所需的基於pins
/ vetiver
的架構中使用本機fasttext
模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.