女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>PyTorch教程14.2之微調

PyTorch教程14.2之微調

2023-06-05 | pdf | 0.35 MB | 次下載 | 免費

資料介紹

在前面的章節中,我們討論了如何在只有 60000 張圖像的 Fashion-MNIST 訓練數據集上訓練模型。我們還描述了 ImageNet,這是學術界使用最廣泛的大規模圖像數據集,它有超過 1000 萬張圖像和 1000 個對象。然而,我們通常遇到的數據集的大小介于這兩個數據集之間。

假設我們要從圖片中識別出不同類型的椅子,然后向用戶推薦購買鏈接。一種可能的方法是首先識別 100 把普通椅子,為每把椅子拍攝 1000 張不同角度的圖像,然后在收集的圖像數據集上訓練分類模型。雖然這個椅子數據集可能比 Fashion-MNIST 數據集大,但示例數量仍然不到 ImageNet 中的十分之一。這可能會導致適用于 ImageNet 的復雜模型在此椅子數據集上過度擬合。此外,由于訓練示例數量有限,訓練模型的準確性可能無法滿足實際要求。

為了解決上述問題,一個顯而易見的解決方案是收集更多的數據。然而,收集和標記數據可能會花費大量時間和金錢。例如,為了收集 ImageNet 數據集,研究人員花費了數百萬美元的研究經費。雖然目前的數據采集成本已經大幅降低,但這一成本仍然不容忽視。

另一種解決方案是應用遷移學習,將從源數據集中學到的知識遷移目標數據集中例如,盡管 ImageNet 數據集中的大部分圖像與椅子無關,但在此數據集上訓練的模型可能會提取出更一般的圖像特征,這有助于識別邊緣、紋理、形狀和物體組成。這些相似的特征也可能對識別椅子有效。

14.2.1。腳步

在本節中,我們將介紹遷移學習中的一種常用技術:微調如圖 14.2.1所示,微調包括以下四個步驟:

  1. 在源數據集(例如,ImageNet 數據集)上預訓練神經網絡模型,即源模型。

  2. 創建一個新的神經網絡模型,即目標模型。這將復制源模型上除輸出層之外的所有模型設計及其參數。我們假設這些模型參數包含從源數據集中學到的知識,并且這些知識也適用于目標數據集。我們還假設源模型的輸出層與源數據集的標簽密切相關;因此它不在目標模型中使用。

  3. 向目標模型添加一個輸出層,其輸出數量為目標數據集中的類別數量。然后隨機初始化該層的模型參數。

  4. 在目標數據集(例如椅子數據集)上訓練目標模型。輸出層將從頭開始訓練,而所有其他層的參數將根據源模型的參數進行微調。

https://file.elecfans.com/web2/M00/AA/47/pYYBAGR9O0iAB3lVAAL7dtPCjdU591.svg

圖 14.2.1微調。

當目標數據集遠小于源數據集時,微調有助于提高模型的泛化能力。

14.2.2。熱狗識別

讓我們通過一個具體案例來演示微調:熱狗識別。我們將在一個小型數據集上微調 ResNet 模型,該數據集是在 ImageNet 數據集上預訓練的。這個小數據集包含數千張有熱狗和沒有熱狗的圖像。我們將使用微調模型從圖像中識別熱狗。

%matplotlib inline
import os
import torch
import torchvision
from torch import nn
from d2l import torch as d2l
%matplotlib inline
import os
from mxnet import gluon, init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()

14.2.2.1。讀取數據集

我們使用的熱狗數據集取自在線圖像。該數據集包含 1400 張包含熱狗的正類圖像,以及包含其他食物的大量負類圖像。兩個類別的 1000 張圖像用于訓練,其余用于測試。

解壓下載的數據集后,我們得到兩個文件夾 hotdog/trainhotdog/test. 這兩個文件夾都有hotdognot-hotdog子文件夾,其中任何一個都包含相應類別的圖像。

#@save
d2l.DATA_HUB['hotdog'] = (d2l.DATA_URL + 'hotdog.zip',
             'fba480ffa8aa7e0febbb511d181409f899b9baa5')

data_dir = d2l.download_extract('hotdog')
#@save
d2l.DATA_HUB['hotdog'] = (d2l.DATA_URL + 'hotdog.zip',
             'fba480ffa8aa7e0febbb511d181409f899b9baa5')

data_dir = d2l.download_extract('hotdog')
Downloading ../data/hotdog.zip from http://d2l-data.s3-accelerate.amazonaws.com/hotdog.zip...

我們創建兩個實例來分別讀取訓練和測試數據集中的所有圖像文件。

train_imgs = torchvision.datasets.ImageFolder(os.path.join(data_dir, 'train'))
test_imgs = torchvision.datasets.ImageFolder(os.path.join(data_dir, 'test'))
train_imgs = gluon.data.vision.ImageFolderDataset(
  os.path.join(data_dir, 'train'))
test_imgs = gluon.data.vision.ImageFolderDataset(
  os.path.join(data_dir, 'test'))

前 8 個正面示例和最后 8 個負面圖像如下所示。如您所見,圖像的大小和縱橫比各不相同。

hotdogs = [train_imgs[i][0] for i in range(8)]
not_hotdogs = [train_imgs[-i - 1][0] for i in range(8)]
d2l.show_images(hotdogs + not_hotdogs, 2, 8, scale=1.4);
https://file.elecfans.com/web2/M00/A9/7B/pYYBAGR4YniAE6iUAAOFYlOAqlA349.png
hotdogs = [train_imgs[i][0] for i in range(8)]
not_hotdogs = [train_imgs[-i - 1][0] for i in range(8)]
d2l.show_images(hotdogs + not_hotdogs, 2, 8, scale=1.4);
https://file.elecfans.com/web2/M00/A9/7B/pYYBAGR4YniAE6iUAAOFYlOAqlA349.png

在訓練過程中,我們首先從圖像中裁剪出一個隨機大小和隨機縱橫比的隨機區域,然后將這個區域縮放到 224×224輸入圖像。在測試過程中,我們將圖像的高度和寬度都縮放到 256 像素,然后裁剪一個中心 224×224區域作為輸入。此外,對于三個 RGB(紅色、綠色和藍色)顏色通道,我們逐通道標準化它們的值。具體來說,就是用該通道的每個值減去該通道的平均值,然后除以該通道的標準差。

# Specify the means and standard deviations of the three RGB channels to
# standardize each channel
normalize = torchvision.transforms.Normalize(
  [0.485, 0.456, 0.406], [0.229, 0.224, 0.225])

train_augs = torchvision.transforms.Compose([
  torchvision.transforms.RandomResizedCrop(224),
  torchvision.transforms.RandomHorizontalFlip(),
  torchvision.transforms.ToTensor(),
  normalize])

test_augs = torchvision.transforms.Compose([
  torchvision.transforms.Resize([256, 256]),
  torchvision.transforms.CenterCrop(224),
  torchvision.transforms.ToTensor(),
  normalize])
# Specify the means and standard deviations of the three RGB channels to
# standardize each channel
normalize = gluon.data.vision.transforms.Normalize(
  [0.485, 0.456, 0.406], [0.229, 0.224, 0.225])

train_augs = gluon.data.vision.transforms.Compose([
  gluon.data.vision.transforms.RandomResizedCrop(224),
  gluon.data.vision.transforms.RandomFlipLeftRight(),
  gluon.data.vision.transforms.ToTensor(),
  normalize])

test_augs = gluon.data.vision.transforms.Compose([
  gluon.data.vision.transforms.Resize(256),
  gluon.data.vision.transforms.CenterCrop(224),
  gluon.data.vision.transforms.ToTensor(),
  normalize])

14.2.2.2。定義和初始化模型

我們使用在 ImageNet 數據集上預訓練的 ResNet-18 作為源模型。在這里,我們指定pretrained=True自動下載預訓練模型參數。如果是第一次使用這個模型,需要連接互聯網才能下載。

pretrained_net = torchvision.models.resnet18(pretrained=True)

預訓練源模型實例包含多個特征層和一個輸出層fc。這種劃分的主要目的是為了便于微調除輸出層之外的所有層的模型參數。fc下面給出源模型的成員變量。

pretrained_net.fc
Linear(in_features=512, out_features=1000, bias=True)
pretrained_net = gluon.model_zoo.vision.resnet18_v2(pretrained=True)

The pretrained source model instance contains two member variables: features and output. The former contains all layers of the model except the output layer, and the latter is the output layer of the model. The main purpose of this division is to facilitate the fine-tuning of model parameters of all layers but the output layer. The member variable output of source model is shown below.

pretrained_net.output
Dense(512 -> 1000, linear)

作為全連接層,它將 ResNet 最終的全局平均池化輸出轉化為 ImageNet 數據集的 1000 類輸出。然后我們構建一個新的神經網絡作為目標模型。它的定義方式與預訓練源模型相同,不同之處在于它在最后一層的輸出數量設置為目標數據集中的類數(而不是 1000)。

在下面的代碼中,目標模型實例的輸出層之前的模型參數finetune_net被初始化為源模型中相應層的模型參數。由于這些模型參數是通過在 ImageNet 上進行預訓練獲得的,因此它們是有效的。因此,我們只能使用較小的學習率來 微調此類預訓練參數。相比之下,輸出層中的模型參數是隨機初始化的,通常需要更大的學習率才能從頭開始學習。讓基礎學習率成為η, 學習率10η將用于迭代輸出層中的模型參數。

?

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 安远县| 广南县| 宿州市| 北海市| 曲阳县| 巩留县| 福贡县| 玉溪市| 土默特左旗| 托克托县| 东阿县| 大安市| 镇原县| 平远县| 东阳市| 沁源县| 布拖县| 阜新| 岳普湖县| 洪泽县| 潍坊市| 霞浦县| 涟源市| 韶山市| 上蔡县| 濮阳市| 湖南省| 阜平县| 南宫市| 启东市| 方正县| 农安县| 顺平县| 息烽县| 赤壁市| 奉贤区| 磴口县| 定日县| 丹巴县| 山阴县| 惠州市|