ML.net重新訓練模型需要注意的事項。


ml.net是微軟機器學習的東西,如果你的需求是需要一個固定的模型來進行操作的話那就按着官網的教程來就可以,但是大部分的模型可能不滿足現有的需求,那么我們需要對模型進行重新訓練。
重新訓練模型有限制條件,你重新訓練模型的數據分類必須是原有模型已有的分類,如果想增加分類的話只能重新訓練一個新的模型來進行操作。
模型重新訓練的話在第一次模型生成時候需要保存另外一個模型文件,如圖:

modle的生成是通過定義的ogdEstimator算法進行生成的,而ogdEstimator里的算法需要和上面你生成模型的管道的算法一致。算法所需要的參數labelColumnName和featureColumnName也需要一一對應。
第一次建模型階段准備工作已完成,需要保存的兩個zip盡量保存到項目中去。
后續訓練已有的模型開始的話是這樣的:

首先加載你所保存的兩個模型文件,originalModelParameters所轉換的參數類型需要跟你模型的算法參數類型匹配,不然會提示無法轉換成功。

然后加載你導入的新數據,轉為IDataview。

這部分是主要是重新訓練模型的算法,LbfgsMaximumEntropy里面的參數要相對應,這個就不用說了,當然你的算法要是其他的也差不太多。
Fit所傳入的兩個變量,第一個是你的新數據,第二個是你的老數據,新的訓練模型將以老數據為起點進行訓練。

所生成的retrainedModel模型數據直接保存到modelZip就可以。

接下來在進行使用這個模型的時候需要進行一些改變。
如果你不需要重新訓練模型的話,進行預測是這樣的:

直接拿第一次生成的模型進行預測。然后返回給你預測的結果。
但是當我們重新訓練過模型的時候需要對預測方法進行一些改變:

需要加載初始的模型和訓練后的模型。
重新訓練模型的正常流程大概就是這樣的了。正常生成模型以及進行預測的方法官方的demo里就可以找到。
注:保存模型之后的Weights會獲取不到,提示非公開成員。然后我這邊需要進行這樣一個操作:

先定義然后通過GetWeights獲取Weights的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM