精品1区2区3区4区,81精品国产乱码久久久久久 ,久久久一本精品99久久精品66,久久电影tv

中國電商物流網-電子商務與物流行業融合媒體!電子商務物流行業門戶網站!
快遞網點 郵編查詢 行政區劃 高鐵時刻 高鐵票價 高鐵車次
貿易資訊
免費注冊 登錄
中國電商物流網
企 業
產 品
商 務

PaddlePaddle升級解讀|十余行代碼完成遷移學習 PaddleHub實戰篇-ITBEAR科技資訊

來源:中國電商物流網  發布時間:2019-5-7 9:21

   遷移學習 (Transfer Learning) 是屬于深度學習的一個子研究領域,該研究領域的目標在于利用數據、任務、或模型之間的相似性,將在舊領域學習過的知識,遷移應用于新領域中。遷移學習吸引了很多研究者投身其中,因為它能夠很好的解決深度學習中的以下幾個問題:

  一些研究領域只有少量標注數據,且數據標注成本較高,不足以訓練一個足夠魯棒的神經網絡

  大規模神經網絡的訓練依賴于大量的計算資源,這對于一般用戶而言難以實現

  應對于普適化需求的模型,在特定應用上表現不盡如人意

  為了讓開發者更便捷地應用遷移學習,百度 PaddlePaddle 開源了預訓練模型管理工具 PaddleHub。開發者用使用僅僅十余行的代碼,就能完成遷移學習。本文將全面介紹 PaddleHub 及其應用方法。

  項目地址:https://github.com/PaddlePaddle/PaddleHub

PaddleHub 介紹

  PaddleHub 是基于 PaddlePaddle 開發的預訓練模型管理工具,可以借助預訓練模型更便捷地開展遷移學習工作,旨在讓 PaddlePaddle 生態下的開發者更便捷體驗到大規模預訓練模型的價值。

  PaddleHub 目前的預訓練模型覆蓋了圖像分類、目標檢測、詞法分析、Transformer、情感分析五大類別。未來會持續開放更多類型的深度學習模型,如語言模型、視頻分類、圖像生成等預訓練模型。

圖 1 PaddleHub 功能全景

  PaddleHub 主要包括兩個功能:命令行工具和 Fine-tune API。

命令行工具

  PaddleHub 借鑒了 Anaconda 和 PIP 等軟件包管理的理念,開發了命令行工具,可以方便快捷的完成模型的搜索、下載、安裝、預測等功能,對應的關鍵的命令分別是 search,download,install,run 等。我們以 run 命令為例,介紹如何通過命令行工具進行預測。

  Run 命令用于執行 Module 的預測,這里分別舉一個 NLP 和 CV 的例子。

  對于 NLP 任務:輸入數據通過--input_text 指定。以百度 LAC 模型(中文詞法分析)為例,可以通過以下命令實現單行文本分析。

  對于 CV 任務:輸入數據通過--input_path 指定。以 SSD 模型(單階段目標檢測)為例子,可以通過以下命令實現單張圖片的預測。

  更多的命令用法,請讀者參考文首的 Github 項目鏈接。

Fine-tune API

  PaddleHub 提供了基于 PaddlePaddle 實現的 Fine-tune API, 重點針對大規模預訓練模型的 Fine-tune 任務做了高階的抽象,讓預訓練模型能更好服務于用戶特定場景的應用。通過大規模預訓練模型結合 Fine-tune,可以在更短的時間完成模型的收斂,同時具備更好的泛化能力。

圖 2 PaddleHub Fine-tune API 全景

  Fine-tune :對一個 Task 進行 Fine-tune,并且定期進行驗證集評估。在 Fine-tune 的過程中,接口會定期的保存 checkpoint(模型和運行數據),當運行被中斷時,通過 RunConfig 指定上一次運行的 checkpoint 目錄,可以直接從上一次運行的最后一次評估中恢復狀態繼續運行。

  遷移任務 Task:在 PaddleHub 中,Task 代表了一個 Fine-tune 的任務。任務中包含了執行該任務相關的 program 以及和任務相關的一些度量指標(如分類準確率 accuracy、precision、 recall、 F1-score 等)、模型損失等。

  運行配置 RunConfig:在 PaddleHub 中,RunConfig 代表了在對 Task 進行 Fine-tune 時的運行配置。包括運行的 epoch 次數、batch 的大小、是否使用 GPU 訓練等。

  優化策略 Strategy:在 PaddleHub 中,Strategy 類封裝了一系列適用于遷移學習的 Fine-tune 策略。Strategy 包含了對預訓練參數使用什么學習率變化策略,使用哪種類型的優化器,使用什么類型的正則化等。

  預訓練模型 Module :Module 代表了一個可執行的模型。這里的可執行指的是,Module 可以直接通過命令行 hub run ${MODULE_NAME} 執行預測,或者通過 context 接口獲取上下文后進行 Fine-tune。在生成一個 Module 時,支持通過名稱、url 或者路徑創建 Module。

  數據預處理 Reader :PaddleHub 的數據預處理模塊 Reader 對常見的 NLP 和 CV 任務進行了抽象。

  數據集 Dataset:PaddleHub 提供多種 NLP 任務和 CV 任務的數據集,可供用戶載,用戶也可以在自定義數據集上完成 Fine-tune。

  基于以上介紹的 PaddleHub 兩大功能,用戶可以實現:無需編寫代碼,一鍵使用預訓練模型進行預測;通過 hub download 命令,快速地獲取 PaddlePaddle 生態下的所有預訓練模型;借助 PaddleHub Fine-tune API,使用少量代碼完成遷移學習。

  以下將從實戰角度,教你如何使用 PaddleHub 進行圖像分類遷移。

PaddleHub 實戰

  1. 安裝

  PaddleHub 是基于 PaddlePaddle 的預訓練模型管理框架,使用 PaddleHub 前需要先安裝 PaddlePaddle,如果你本地已經安裝了 CPU 或者 GPU 版本的 PaddlePaddle,那么可以跳過以下安裝步驟。

  推薦使用大于 1.4.0 版本的 PaddlePaddle。

  通過以下命令來安裝 PaddleHub。

  2. 選擇合適的模型

  首先導入必要的 python 包

  接下來我們要在 PaddleHub 中選擇合適的預訓練模型來 Fine-tune,由于貓狗分類是一個圖像分類任務,因此我們使用經典的 ResNet-50 作為預訓練模型。PaddleHub 提供了豐富的圖像分類預訓練模型,包括了最新的神經網絡架構搜索類的 PNASNet,我們推薦你嘗試不同的預訓練模型來獲得更好的性能。

  3. 數據準備

  接著需要加載圖片數據集。為了快速體驗,我們直接加載 PaddleHub 提供的貓狗分類數據集,如果想要使用自定義的數據進行體驗,請查看自定義數據。

  4. 自定義數據

  本節說明如何組裝自定義的數據,如果想使用貓狗數據集進行體驗,可以直接跳過本節。使用自定義數據時,我們需要自己切分數據集,將數據集且分為訓練集、驗證集和測試集。

  同時使用三個文本文件來記錄對應的圖片路徑和標簽,此外還需要一個標簽文件用于記錄標簽的名稱。

  訓練/驗證/測試集的數據列表文件的格式如下

  標簽列表文件的格式如下

  使用如下的方式進行加載數據,生成數據集對象

  注意事項:

  1、num_labels 要填寫實際的分類數量,如貓狗分類該字段值為 2,food101 該字段值為 101,下文以 2 為例子

  2、base_path 為數據集實際路徑,需要填寫全路徑,下文以/test/data 為例子

  3、訓練/驗證/測試集的數據列表文件中的圖片路徑需要相對于 base_path 的相對路徑,例如圖片的實際位置為/test/data/dog/dog1.jpg,base_path 為/test/data,則文件中填寫的路徑應該為 dog/dog1.jpg

      5. 生成 Reader

  接著生成一個圖像分類的 reader,reader 負責將 dataset 的數據進行預處理,接著以特定格式組織并輸入給模型進行訓練。

  當我們生成一個圖像分類的 reader 時,需要指定輸入圖片的大小

     6. 組建 Fine-tune Task

  有了合適的預訓練模型和準備要遷移的數據集后,我們開始組建一個 Task。

  由于貓狗分類是一個二分類的任務,而我們下載的 cv_classifer_module 是在 ImageNet 數據集上訓練的千分類模型,所以我們需要對模型進行簡單的微調,把模型改造為一個二分類模型:

  1、獲取 cv_classifer_module 的上下文環境,包括輸入和輸出的變量,以及 Paddle Program;

  2、從輸出變量中找到特征圖提取層 feature_map;

  3、在 feature_map 后面接入一個全連接層,生成 Task;

  7. 選擇運行時配置

  在進行 Fine-tune 前,我們可以設置一些運行時的配置,例如如下代碼中的配置,表示:

  use_cuda:設置為 False 表示使用 CPU 進行訓練。如果本機支持 GPU,且安裝的是 GPU 版本的 PaddlePaddle,我們建議你將這個選項設置為 True;

  epoch:要求 Fine-tune 的任務只遍歷 1 次訓練集;

  batch_size:每次訓練的時候,給模型輸入的每批數據大小為 32,模型訓練時能夠并行處理批數據,因此 batch_size 越大,訓練的效率越高,但是同時帶來了內存的負荷,過大的 batch_size 可能導致內存不足而無法訓練,因此選擇一個合適的 batch_size 是很重要的一步;

  log_interval:每隔 10 step 打印一次訓練日志;

  eval_interval:每隔 50 step 在驗證集上進行一次性能評估;

  checkpoint_dir:將訓練的參數和數據保存到 cv_Fine-tune_turtorial_demo 目錄中;

  strategy:使用 DefaultFine-tuneStrategy 策略進行 Fine-tune;

  更多運行配置,請查看文首的 Github 項目鏈接。

       8. 開始 Fine-tune

  我們選擇 Fine-tune_and_eval 接口來進行模型訓練,這個接口在 Fine-tune 的過程中,會周期性的進行模型效果的評估,以便我們了解整個訓練過程的性能變化。

      9. 查看訓練過程的效果

  訓練過程中的性能數據會被記錄到本地,我們可以通過 visualdl 來可視化這些數據。

  我們在 shell 中輸入以下命令來啟動 visualdl,其中${HOST_IP} 為本機 IP,需要用戶自行指定

  啟動服務后,我們使用瀏覽器訪問${HOST_IP}:8989,可以看到訓練以及預測的 loss 曲線和 accuracy 曲線,如下圖所示。

       10. 使用模型進行預測

  當 Fine-tune 完成后,我們使用模型來進行預測,整個預測流程大致可以分為以下幾步:

  1、構建網絡

  2、生成預測數據的 Reader

  3、切換到預測的 Program

  4、加載預訓練好的參數

  5、運行 Program 進行預測

  通過以下命令來獲取測試的圖片(適用于貓狗分類的數據集)

  注意:其他數據集所用的測試圖片請自行準備。

  完整預測代碼如下:




關注ITBear科技資訊公眾號(itbear365 ),每天推送你感興趣的科技內容。

特別提醒:本網內容轉載自其他媒體,目的在于傳遞更多信息,并不代表本網贊同其觀點。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關內容。本站不承擔此類作品侵權行為的直接責任及連帶責任。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。

Copyright © 2012-2025 sd56.net.cn All Rights Reserved 中國電商物流網 版權所有
主站蜘蛛池模板: 宁德市| 塔河县| 丰都县| 伊吾县| 陇西县| 南部县| 铜陵市| 临沧市| 汪清县| 曲周县| 屯昌县| 商水县| 永州市| 福贡县| 耿马| 达孜县| 吴忠市| 阿坝县| 云和县| 深水埗区| 榆林市| 扬州市| 清水河县| 亳州市| 琼中| 思南县| 时尚| 南阳市| 南木林县| 德化县| 平乐县| 余庆县| 东丽区| 安康市| 沁源县| 乐安县| 江油市| 嘉峪关市| 英吉沙县| 保康县| 神木县|