簡體   English   中英

Package 訓練神經網絡的 model 權重,使其可用於遷移學習

[英]Package the model weights of a trained neural network to make it usable for transfer learning

我已經在電影數據集上訓練和評估了一個神經網絡。 基本上,我正在嘗試使用 plot、演員、評論等文本輸入來預測多類因變量movie_genre

model 權重以.h5格式保存在我計算機的本地路徑中。 讓我們在這里說C:/Users/Desktop/classification_attention_layer_model.h5

model結構也以單獨的.json文件格式保存在同一路徑下。 讓我們在這里說classification_attention_layer_model.json

我想要的是給同事神經網絡權重,並使用這些權重進行遷移學習。 例如,使用我發送給他的預訓練詞嵌入創建一個不同的神經網絡,並在密集/隱藏層之上使用這些預訓練嵌入來訓練他自己的電影神經網絡。

我怎樣才能做到這一點? 我知道一種方法是向他發送帶有訓練嵌入權重的.h5文件。 但這是一種專業的方法嗎?

我堅信 docker 可以提供幫助,但我不知道如何。 或者,也許 python package 可以解決問題。

我在網上找到的唯一相關問題是這個如何創建類似於 Imagenet 或 Noisy-student 的預訓練權重 model? . 但是,他們只解釋了如何保存我已經完成的 model 權重。

基本上,當它使用文本創建其詞向量時,我想實現 spaCy package 的方法。 這個任務在Kaggle 的課程 NLP練習 3 中演示:

import spacy
import numpy as np

nlp = spacy.load('en_core_web_lg')
review_data = pd.read_csv('../input/nlp-course/yelp_ratings.csv')

vectors = np.array([nlp(review_data.text).vector for idx, review in review_data.iterrows()])
    
vectors.shape #(100, 300) where 100 rows and 300 are the vectors per row

如果我是你,我會創建一個簡單的 package 並將其上傳到 PyPI。

您可以使用此處所述的MANIFEST.in將 model 作為 package 的一部分(如果它不大)添加。

不利的一面是,無論他們此時是否正在使用您的軟件,都會占用用戶的磁盤空間。

或者(IMO 更好),將您的權重上傳到某處並通過代碼使它們可下載,例如:

import yourpackage

backbone = yourpackage.yourmodel.backbone(
    download=True, 
    pretrained=True
)

這就是torchvision解決這個問題的方式,它似乎是一個很好的解決方案。

Docker

我認為在這種情況下沒有任何意義,除非您的 model 依賴於非 pip 可安裝軟件,這不太可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM