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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Training a classifier

發布時間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Training a classifier 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你已經學習了如何定義神經網絡,計算損失和執行網絡權重的更新。

現在你或許在思考。

What about data?

通常當你需要處理圖像,文本,音頻,視頻數據,你能夠使用標準的python包將數據加載進numpy數組。之后你能夠轉換這些數組到torch.*Tensor。

  • 對于圖片,類似于Pillow,OPenCV的包很有用
  • 對于音頻,類似于scipy和librosa的包
  • 對于文字,無論是基于原生python和是Cython的加載,或者NLTK和SpaCy都有效

對于視覺,我們特意創建了一個包叫做torchvision,它有常見數據集的數據加載,比如ImageNet,CIFAR10,MNIST等,還有圖片的數據轉換,torchvision.datasets和torch.utils.data.Dataloader。

這提供了很方便的實現,避免了寫樣板代碼。

對于這一文章,我們將使用CIFAR10數據集。它擁有飛機,汽車,鳥,貓,鹿,狗,霧,馬,船,卡車等類別。CIFAR-10的圖片尺寸為3*32*32,也就是3個顏色通道和32*32個像素。

?

Training? an image classifier

?我們將按照順序執行如下步驟:

  • 使用torchvision加載并且標準化CIFAR10訓練和測試數據集
  • 定義一個卷積神經網絡
  • 定義損失函數
  • 使用訓練數據訓練網絡
  • 使用測試數據測試網絡
  • ?

    1.加載并標準化CIFAR10

    使用torchvision,加載CIFAR10非常簡單

    import torch import torchvision import torchvision.transforms as transforms

    torchvision數據集的輸出是PIL圖片庫圖片,范圍為[0,1]。我們將它們轉換為tensor并標準化為[-1,1]。

    import torch import torchvision import torchvision.transforms as transformstransform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
    trainset
    =torchvision.datasets.CIFAR10(root='./data',train=True,download=True,transform=transform) trainloader=torch.data.Dataloader(trainset,batch_size=4,shuffle=True,num_workers=2)
    testset
    =torchvision.datasets.CIFAR10(root='./data',train=False,download=True,transform=transform) testloader=torch.utils.data.Dataloader(testset,batch_size=4,shuffle=False,num_workers=2)
    classes
    = ('plane', 'car', 'bird', 'cat','deer', 'dog', 'frog', 'horse', 'ship', 'truck') out: Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz Files already downloaded and verified

    ?我們來觀察一下訓練集圖片

    import matplotlib.pyplot as plt import numpy as npdef imshow(img):img=img/2+0.5npimg=img.numpy()plt.imshow(np.transpose(npimg,(1,2,0)))dataiter=iter(trainloader) images,labels=dataiter.next()imshow(torchvision.utils.make_grid(images)) plt.show() print(''.join('%5s'%classes[labels[j]] for j in range(4)))

    ?

    out: truck truck dog truck

    ?

    ?2.定義卷積神經網絡

    從前面神經網絡章節復制神經網絡,并把它改成接受3維圖片輸入(而不是之前定義的一維圖片)。

    import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net,self).__init__()self.conv1=nn.Conv2d(3,6,5)self.pool=nn.MaxPool2d(2,2)self.conv2=nn.Conv2d(6,16,5)self.fc1=nn.Linear(16*5*5,120)self.fc2=nn.Linear(120,84)self.fc3=nn.Linear(84,10)def forward(self,x):x=self.pool(F.relu(self.conv1(x)))x=self.pool(F.relu(self.conv2(x)))x=x.view(-1,16*5*5)x=F.relu(self.fc1(x))x=F.relu(self.fc2(x))x=self.fc3(x)return xnet=Net()

    ?

    ?3.定義損失函數和優化器

    我們使用分類交叉熵損失和帶有動量的SGD

    import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer=optim.SGD(net.parameters(),lr=0.001,momentum=0.9)

    ?

    4.訓練網絡

    我們只需要簡單地迭代數據,把輸入喂進網絡并優化。

    import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(),lr=0.001,momentum=0.9)for epoch in range(2):running_loss=0.0for i,data in enumerate(trainloader,0):inputs,labels=dataoptimizer.zero_grad()outputs=net(inputs)loss=criterion(outputs,labels)loss.backward()optimizer.step()running_loss+=loss.item()if i%2000==1999:print('[%d, %5d] loss: %.3f' %(epoch + 1, i + 1, running_loss / 2000))running_loss=0 print('Finished Training') out: [1, 2000] loss: 2.208 [1, 4000] loss: 1.797 [1, 6000] loss: 1.627 [1, 8000] loss: 1.534 [1, 10000] loss: 1.508 [1, 12000] loss: 1.453 [2, 2000] loss: 1.378 [2, 4000] loss: 1.365 [2, 6000] loss: 1.326 [2, 8000] loss: 1.309 [2, 10000] loss: 1.290 [2, 12000] loss: 1.262 Finished Training

    ?

    ?

    4.在測試數據集上測試網絡

    我們已經遍歷了兩遍訓練集來訓練網絡。需要檢查下網絡是不是已經學習到了什么。

    我們將檢查神經網絡輸出的預測標簽是否與真實標簽相同。如果預測是正確的,我們將這一樣本加入到正確預測的列表。

    我們先來熟悉一下訓練圖片。

    dataiter=iter(testloader) images,labes=dataiter.next()imshow(torchvision.utils.make_grid(images)) plt.show() print('GroundTruth: ',' '.join('%5s' % classes[labels[j]] for j in range(4)))

    ?

    out: GroundTruth: plane deer dog horse

    ?ok,現在讓我們看一下神經網絡認為這些樣本是什么。

    outputs=net(images)

    ?輸出是10個類別的量值,大的值代表網絡認為某一類的可能性更大。所以我們來獲得最大值得索引:

    _,predicted=torch.max(outputs,1) print("Predicted: ",' '.join('%5s' %classes[predicted[j]] for j in range(4))) out: Predicted: bird dog deer horse

    ?讓我們看看整個數據集上的模型表現。

    out: Accuracy of the network on the 10000 test images: 54 %

    ?這看起來要好過瞎猜,隨機的話只要10%的準確率(因為是10類)??磥砭W絡是學習到了一些東西。

    我們來繼續看看在哪些類上的效果好,在哪些類上的效果比較差:

    out: Accuracy of plane : 56 % Accuracy of car : 70 % Accuracy of bird : 27 % Accuracy of cat : 16 % Accuracy of deer : 44 % Accuracy of dog : 64 % Accuracy of frog : 61 % Accuracy of horse : 73 % Accuracy of ship : 68 % Accuracy of truck : 61 %

    好了,接下來該干點啥?

    我們怎樣將這個神經網絡運行在GPU上呢?

    Trainning on GPU

    就像你怎么把一個Tensor轉移到GPU上一樣,現在把神經網絡轉移到GPU上。

    如果我們有一個可用的CUDA,首先將我們的設備定義為第一個可見的cuda設備:

    device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(device) out: cuda:0

    ?剩下的章節我們假定我們的設備是CUDA。

    之后這些方法將遞歸到所有模塊,將其參數和緩沖區轉換為CUDA張量:

    net.to(device)

    ?記得你還需要在每步循環里將數據轉移到GPU上:

    inputs,labels=inputs.to(device),labels.to(device)

    為什么沒注意到相對于CPU巨大的速度提升?這是因為你的網絡還非常小。

    ?

    練習:嘗試增加你網絡的寬度(第一個nn.Conv2d的參數2應該與第二個nn.Conv2d的參數1是相等的數字),觀察你得到的速度提升。

    達成目標:

    • 更深一步理解Pytorch的Tensor庫和神經網絡
    • 訓練一個小神經網絡來分類圖片

    ?Trainning on multiple GPUs

    如果你想看到更加顯著的GPU加速,請移步:https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html

    ?

    轉載于:https://www.cnblogs.com/Thinker-pcw/p/9637411.html

    總結

    以上是生活随笔為你收集整理的Training a classifier的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 三年在线观看视频 | 亚洲男人的天堂在线观看 | 欧美国产成人精品一区二区三区 | www色网| 强迫凌虐淫辱の牝奴在线观看 | 国产精品资源在线 | 丰满肥臀噗嗤啊x99av | 天天综合天天综合 | 成人欧美在线 | 91九色pron | 鲁丝片一区二区三区 | www.成人国产| 永久免费观看av | 国产黄色在线 | 好姑娘在线观看高清完整版电影 | 国产内射老熟女aaaa∵ | 在线观看第一页 | 炕上如狼似虎的呻吟声 | 蜜桃av中文字幕 | 黄色av网页 | 日精品| 丝袜人妻一区二区 | 91在线观看欧美日韩 | 国产视频精品视频 | 裸体黄色片 | 狠狠躁日日躁 | 天天艹| 桃色成人网 | 91系列在线观看 | 高h文在线 | 欧美日韩乱 | 黄色a级片视频 | 99热黄色 | 亚洲成人激情在线 | 国产一区二区三区四区五区六区 | 91免费播放| 亚洲伦理在线播放 | 香港一级淫片免费放 | 九九自拍偷拍 | 婷婷射 | 一级黄色片免费看 | 香蕉成人在线视频 | 91视频最新入口 | 国产精品第2页 | www.久久国产 | 日韩精品一区二 | 久久免费视频一区 | 国产欧美视频在线观看 | 中文在线观看免费高清 | 日本在线一区二区 | 教练含着她的乳奶揉搓揉捏动态图 | 亚洲精品无码永久在线观看 | 色桃视频| 午夜性片 | 农村妇女毛片精品久久久 | 国产又粗又深又猛又爽又在线观看 | 日本一区高清 | 光棍影院av| 欧美一区二区黄片 | 国产一区二区视频在线免费观看 | 国语对白做受69按摩 | 男人的天堂一区 | 中文字幕日韩人妻在线视频 | 久久精品国产清自在天天线 | 美女草逼视频 | 四虎永久免费观看 | 欧美一区二区精品 | 四虎网站在线播放 | 人人妻人人澡人人爽 | 久久精品| 特黄1级潘金莲 | 免费在线观看日韩av | 亚洲不卡视频在线 | 日韩国产在线观看 | 永久免费未网 | 800av在线视频 | 欧美日韩一区二区三区在线播放 | 97人妻一区二区精品视频 | 免费荫蒂添的好舒服视频 | 亚洲熟女一区二区三区 | 久操av在线 | 永久福利视频 | 成人片免费看 | 在线观看天堂av | 亚洲无人区码一码二码三码的含义 | 亚洲国产精品福利 | 成人av高清在线 | 性视频免费 | 日韩射吧 | 国产午夜精品免费一区二区三区视频 | 麻豆91在线 | 日韩精品xxxx | 国产精品麻豆视频 | 天天干狠狠操 | 欧美精品一区二区蜜臀亚洲 | 日韩女同强女同hd | 少妇又紧又色又爽又刺激视频 | 永久免费未满 | 毛片网站在线免费观看 |