日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

paddlepaddle测试安装_PaddlePaddle升级解读 | 十余行代码完成迁移学习,PaddleHub实战篇...

發布時間:2025/1/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 paddlepaddle测试安装_PaddlePaddle升级解读 | 十余行代码完成迁移学习,PaddleHub实战篇... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

  • 一些研究領域只有少量標注數據,且數據標注成本較高,不足以訓練一個足夠魯棒的神經網絡
  • 大規模神經網絡的訓練依賴于大量的計算資源,這對于一般用戶而言難以實現
  • 應對于普適化需求的模型,在特定應用上表現不盡如人意

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

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

PaddleHub 介紹

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

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

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

命令行工具

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

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

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

# 單文本預測 $ hub run lac --input_text "今天是個好日子"

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

# 使用SSD檢測模型對圖片進行目標檢測,第一條命令是下載圖片,第二條命令是執行預測,用戶也可以自 # 己準備圖片 $ wget --no-check-certificate https://paddlehub.bj.bcebos.com/resources/test_img_bird.jpg $ hub run ssd_mobilenet_v1_pascal --input_path test_img_bird.jpg

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

Fine-tune API

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

  • 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,那么可以跳過以下安裝步驟。

$ pip install paddlepaddle #CPU 安裝命令 或者 $ pip install paddlepaddle-gpu # GPU 安裝

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

通過以下命令來安裝 PaddleHub

$ pip install paddlehub

2. 選擇合適的模型

首先導入必要的 python 包

# -*- coding: utf8 -*- import paddlehub as hub import paddle.fluid as fluid

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

module_map = {"resnet50": "resnet_v2_50_imagenet","resnet101": "resnet_v2_101_imagenet","resnet152": "resnet_v2_152_imagenet","mobilenet": "mobilenet_v2_imagenet","nasnet": "nasnet_imagenet","pnasnet": "pnasnet_imagenet" }module_name = module_map["resnet50"] module = hub.Module(name = module_name)

3. 數據準備

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

# 直接用PaddleHub提供的數據集 dataset = hub.dataset.DogCat()

4. 自定義數據

本節說明如何組裝自定義的數據,如果想使用貓狗數據集進行體驗,可以直接跳過本節。

使用自定義數據時,我們需要自己切分數據集,將數據集且分為訓練集、驗證集和測試集。

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

├─data: 數據目錄├─train_list.txt:訓練集數據列表├─test_list.txt:測試集數據列表├─validate_list.txt:驗證集數據列表├─label_list.txt:標簽列表└─……

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

圖片 1 路徑 圖片 1 標簽 圖片 2 路徑 圖片 2 標簽 ...

標簽列表文件的格式如下

分類 1 名稱 分類 2 名稱 ...

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

注意事項:

  • num_labels 要填寫實際的分類數量,如貓狗分類該字段值為 2,food101 該字段值為 101,下文以 2 為例子
  • base_path 為數據集實際路徑,需要填寫全路徑,下文以/test/data 為例子
  • 訓練/驗證/測試集的數據列表文件中的圖片路徑需要相對于 base_path 的相對路徑,例如圖片的實際位置為/test/data/dog/dog1.jpg,base_path 為/test/data,則文件中填寫的路徑應該為 dog/dog1.jpg
  • # 使用本地數據集 class MyDataSet(hub.dataset.base_cv_dataset.ImageClassificationDataset):def __init__(self):self.base_path = "/test/data"self.train_list_file = "train_list.txt"self.test_list_file = "test_list.txt"self.validate_list_file = "validate_list.txt"self.label_list_file = "label_list.txt"self.label_list = Noneself.num_labels = 2

    5. 生成 Reader

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

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

    data_reader = hub.reader.ImageClassificationReader(image_width=module.get_expected_image_width(),image_height=module.get_expected_image_height(),images_mean=module.get_pretrained_images_mean(),images_std=module.get_pretrained_images_std(),dataset=dataset)

    6. 組建 Fine-tune Task

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

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

  • 獲取 cv_classifer_module 的上下文環境,包括輸入和輸出的變量,以及 Paddle Program;
  • 從輸出變量中找到特征圖提取層 feature_map;
  • 在 feature_map 后面接入一個全連接層,生成 Task;
  • input_dict, output_dict, program = module.context(trainable=True)img = input_dict["image"] feature_map = output_dict["feature_map"]task = hub.create_img_cls_task(feature=feature_map, num_classes=dataset.num_labels)feed_list = [img.name, task.variable("label").name]

    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 項目鏈接。

    config = hub.RunConfig(use_cuda=False,num_epoch=1,checkpoint_dir="cv_finetune_turtorial_demo",batch_size=32,log_interval=10,eval_interval=50,strategy=hub.finetune.strategy.DefaultFinetuneStrategy())

    8. 開始 Fine-tune

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

    hub.finetune_and_eval(task, feed_list=feed_list, data_reader=data_reader, config=config)

    9. 查看訓練過程的效果

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

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

    $ visualdl --logdir ./ cv_finetune_turtorial_demo/vdllog --host ${HOST_IP} --port 8989

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

    10. 使用模型進行預測

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

  • 構建網絡
  • 生成預測數據的 Reader
  • 切換到預測的 Program
  • 加載預訓練好的參數
  • 運行 Program 進行預測
  • 通過以下命令來獲取測試的圖片(適用于貓狗分類的數據集)

    $ wget --no-check-certificate https://PaddleHub.bj.bcebos.com/resources/test_img_cat.jpg $ wget --no-check-certificate https://PaddleHub.bj.bcebos.com/resources/test_img_dog.jpg

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

    完整預測代碼如下:

    import os import numpy as np import paddle.fluid as fluid import paddlehub as hub# Step 1: build Program module_map = {"resnet50": "resnet_v2_50_imagenet","resnet101": "resnet_v2_101_imagenet","resnet152": "resnet_v2_152_imagenet","mobilenet": "mobilenet_v2_imagenet","nasnet": "nasnet_imagenet","pnasnet": "pnasnet_imagenet" }module_name = module_map["resnet50"] module = hub.Module(name = module_name) input_dict, output_dict, program = module.context(trainable=False) img = input_dict["image"] feature_map = output_dict["feature_map"]dataset = hub.dataset.DogCat() task = hub.create_img_cls_task(feature=feature_map, num_classes=dataset.num_labels) feed_list = [img.name]# Step 2: create data reader data = ["test_img_dog.jpg","test_img_cat.jpg" ]data_reader = hub.reader.ImageClassificationReader(image_width=module.get_expected_image_width(),image_height=module.get_expected_image_height(),images_mean=module.get_pretrained_images_mean(),images_std=module.get_pretrained_images_std(),dataset=None)predict_reader = data_reader.data_generator(phase="predict", batch_size=1, data=data)label_dict = dataset.label_dict()# Step 3: switch to inference program with fluid.program_guard(task.inference_program()):# Step 4: load pretrained parametersplace = fluid.CPUPlace()exe = fluid.Executor(place)pretrained_model_dir = os.path.join("cv_finetune_turtorial_demo", "best_model")fluid.io.load_persistables(exe, pretrained_model_dir)feeder = fluid.DataFeeder(feed_list=feed_list, place=place)# Step 5: predictfor index, batch in enumerate(predict_reader()):result, = exe.run(feed=feeder.feed(batch), fetch_list=[task.variable('probs')])predict_result = np.argsort(result[0])[::-1][0]print("input %i is %s, and the predict result is %s" %(index+1, data[index], label_dict[predict_result]))

    總結

    以上是生活随笔為你收集整理的paddlepaddle测试安装_PaddlePaddle升级解读 | 十余行代码完成迁移学习,PaddleHub实战篇...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 催眠调教后宫乱淫校园 | 天天爽| 日韩精品一区二区三区不卡在线 | 亚洲小说网 | 动漫美女无遮挡免费 | xxx久久 | 欧美女人一区二区 | 国产天堂一区 | 一起操在线 | 美女尿尿网站 | 国产chinesehd精品 | 日韩黄色一区二区 | 欧美亚洲一二三区 | av在线免费观看网站 | 亚洲国产日韩一区 | 午夜剧场91 | 日韩aⅴ在线观看 | 亚州av| 亚洲免费在线 | 欧美另类色图 | 樱空桃在线 | 日本久操 | 久久精品成人一区二区三区蜜臀 | 激情四射av | 七月色 | 好吊操免费视频 | 亚洲国产三区 | 91国产精品 | www.色偷偷 | 国产午夜手机精彩视频 | 亚洲国产精品久久AV | 日本熟妇毛茸茸丰满 | 成都电影免费大全 | 国产亚洲在线观看 | 中日韩精品在线 | 极品粉嫩国产18尤物 | 欧美成人乱码一二三四区免费 | 不卡精品 | 糖心vlog精品一区二区 | 琪琪电影午夜理论片八戒八戒 | 激情久久中文字幕 | 91在线播放视频 | 国产 日韩 欧美在线 | 蜜桃视频一区 | 少妇高潮一区二区三区99欧美 | 色小姐com| 日韩免费观看一区二区 | 九热视频在线观看 | 国产精品高潮呻吟AV无码 | 男女污污网站 | 蜜臀国产AV天堂久久无码蜜臀 | 亚洲人人人 | 成人动态视频 | 美女激情网站 | 熟妇高潮一区二区高潮 | 男人干女人视频 | 久久久久久久偷拍 | 日韩黄色精品视频 | 中文字幕久久一区 | 国产 一二三四五六 | 桃花岛影院 | 厨房性猛交hd | 嫩草影院黄 | 日韩黄色一级片 | 精品一区李梓熙捆绑 | 亚洲精品一线二线三线 | 中文字幕免费在线观看 | 成人av在线网址 | 男人的天堂毛片 | 久久视频免费 | 日韩欧美视频一区二区三区 | 97福利| 少妇又紧又色又爽又刺激 | 美女又爽又黄 | 国产成人欧美一区二区三区的 | 黄色片久久久 | 婷婷导航| 国产精品自在线 | 免费看欧美成人a片无码 | 神马影院午夜伦理片 | 一本一本久久a久久精品综合麻豆 | 无套内谢少妇毛片 | 一区视频在线免费观看 | 熟女性饥渴一区二区三区 | 91久久精品国产 | 亚洲国产欧美日韩在线 | 国产高清视频网站 | 亚洲色图 在线视频 | 国产精品自拍偷拍视频 | 久久福利免费视频 | 国产欧美精品一区二区色综合 | 三级小视频在线观看 | 久久疯狂做爰流白浆xx | 国产a免费视频 | 肉色丝袜小早川怜子av | 粗大的内捧猛烈进出在线视频 | 操操操操操操操操操 | xxxxxx欧美 | 在线观看网站黄 |