国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于PyTorch的深度學(xué)習(xí)入門(mén)教程之訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類器

ss ? 來(lái)源:雁回晴空 ? 作者:雁回晴空 ? 2021-02-15 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來(lái)介紹PyTorch。為了避免文章過(guò)長(zhǎng),這五個(gè)模塊分別在五篇博文中介紹。

Part1:PyTorch簡(jiǎn)單知識(shí)

Part2:PyTorch的自動(dòng)梯度計(jì)算

Part3:使用PyTorch構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)

Part4:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類器

Part5:數(shù)據(jù)并行化

本文是關(guān)于Part4的內(nèi)容。

Part4:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類器

前面已經(jīng)介紹了定義神經(jīng)網(wǎng)絡(luò),計(jì)算損失和更新權(quán)重,這里介紹訓(xùn)練神經(jīng)網(wǎng)絡(luò)分類器。

1 關(guān)于數(shù)據(jù)

通常,當(dāng)你需要處理圖像、文本、飲品或者視頻數(shù)據(jù),你可以使用標(biāo)準(zhǔn)的python包將數(shù)據(jù)導(dǎo)入到numpy 的array中。之后,你可以將array轉(zhuǎn)換到torch.*Tensor。

(1) 對(duì)于圖像,Pillow、OpenCV等包非常有用。

(2) 對(duì)于音頻,scipy和librosa等包非常好。

(3) 對(duì)于文本,原始Python或基于Cython的加載,或者NLTK和SpaCy都是有用的。

尤其對(duì)于視覺(jué),我們創(chuàng)建了一個(gè)叫做torchvision的包,包含了對(duì)于常用數(shù)據(jù)集(如ImageNet,CIFAR10,MNIST等)的數(shù)據(jù)加載器和對(duì)于images、viz的數(shù)據(jù)轉(zhuǎn)換器,torchvision.datasets和 torch.utils.data.DataLoader。

在該教程中,我們使用CIFAR10數(shù)據(jù)集。它含有這些類:‘airplane’, ‘a(chǎn)utomobile’, ‘bird’, ‘cat’,‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’。 這些圖像的尺寸是3*32*32,即3通道的彩色圖像,尺寸為32*32。

2 訓(xùn)練圖像分類器

我們按照如下步驟:

(1) 使用torchvision導(dǎo)入并且正規(guī)化CIFAR10的訓(xùn)練集和測(cè)試集

(2) 定義一個(gè)卷積神經(jīng)網(wǎng)絡(luò)

(3) 定義一個(gè)損失函數(shù)

(4) 在測(cè)試數(shù)據(jù)上訓(xùn)練該網(wǎng)絡(luò)

(5) 在測(cè)試數(shù)據(jù)上測(cè)試該網(wǎng)絡(luò)

2.1 導(dǎo)入和正規(guī)化CIFAR10

使用torchvision,加載CIFAR10很容易。

import torch
import torchvision
import torchvision.transforms as transforms

torchvision數(shù)據(jù)集的輸出是[0,1]區(qū)間的PILImage。我們把這些圖像轉(zhuǎn)換到[-1,1]區(qū)間的Tensor。

transform = 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.utils.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')

我們來(lái)顯示一些訓(xùn)練圖像。

import matplotlib.pyplot as plt
import numpy as np

# functions to show an image


def imshow(img):
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))


# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()

# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join('%5s' % classes[labels[j]] for j in range(4)))

2.2 定義卷積神經(jīng)網(wǎng)絡(luò)

定義一個(gè)適用于3通道圖像的卷積神經(jīng)網(wǎng)絡(luò)。

from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F


class 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 x


net = Net()

2.3 定義損失函數(shù)和優(yōu)化器

使用分類交叉熵?fù)p失和帶有動(dòng)量的隨機(jī)梯度下降。

import torch.optim as optim

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

2.4 訓(xùn)練網(wǎng)絡(luò)

我們只需要在數(shù)據(jù)上迭代,把輸入數(shù)據(jù)交給網(wǎng)絡(luò)并且優(yōu)化即可。

for epoch in range(2):  # loop over the dataset multiple times

    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        # get the inputs
        inputs, labels = data

        # wrap them in Variable
        inputs, labels = Variable(inputs), Variable(labels)

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        # print statistics
        running_loss += loss.data[0]
        if i % 2000 == 1999:    # print every 2000 mini-batches
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

print('Finished Training')

預(yù)期輸出:

[1,2000]loss:2.191

[1,4000]loss:1.866

[1,6000]loss:1.696

[1,8000]loss:1.596

[1,10000]loss:1.502

[1,12000]loss:1.496

[2,2000]loss:1.422

[2,4000]loss:1.370

[2,6000]loss:1.359

[2,8000]loss:1.321

[2,10000]loss:1.311

[2,12000]loss:1.275

FinishedTraining

2.5 在測(cè)試數(shù)據(jù)上測(cè)試網(wǎng)絡(luò)

我們已經(jīng)訓(xùn)練了一個(gè)網(wǎng)絡(luò)?,F(xiàn)在對(duì)其在測(cè)試數(shù)據(jù)上測(cè)試。第一步,顯示一個(gè)來(lái)自測(cè)試集的圖像。

dataiter = iter(testloader)
images, labels = dataiter.next()

# print images
imshow(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))

預(yù)期輸出:

GroundTruth:catshipshipplane

使用訓(xùn)練好的網(wǎng)絡(luò)來(lái)預(yù)測(cè)這些圖像應(yīng)該屬于哪類。

outputs = net(Variable(images))

輸出的是關(guān)于10個(gè)類別的能量值。哪個(gè)類別能量值高,網(wǎng)絡(luò)就認(rèn)為圖像屬于哪一類。因此我們需要獲取最高能量值的索引。

_, predicted = torch.max(outputs.data, 1)

print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]
                              for j in range(4)))

預(yù)期輸出:

Predicted:catshipcar plane

現(xiàn)在看一下網(wǎng)絡(luò)在整個(gè)數(shù)據(jù)集上的表現(xiàn)。

correct = 0
total = 0
for data in testloader:
    images, labels = data
    outputs = net(Variable(images))
    _, predicted = torch.max(outputs.data, 1)
    total += labels.size(0)
    correct += (predicted == labels).sum()

print('Accuracy of the network on the 10000 test images: %d %%' % (
    100 * correct / total))

預(yù)期輸出:

Accuracyofthenetworkonthe10000testimages:54%

這看起來(lái)比偶然準(zhǔn)確率(10%)要好。看起來(lái),訓(xùn)練有一定效果。

看一下哪些類別表現(xiàn)好,哪些表現(xiàn)不好。

class_correct = list(0. for i in range(10))
class_total = list(0. for i in range(10))
for data in testloader:
    images, labels = data
    outputs = net(Variable(images))
    _, predicted = torch.max(outputs.data, 1)
    c = (predicted == labels).squeeze()
    for i in range(4):
        label = labels[i]
        class_correct[label] += c[i]
        class_total[label] += 1


for i in range(10):
    print('Accuracy of %5s : %2d %%' % (
        classes[i], 100 * class_correct[i] / class_total[i]))

預(yù)期輸出:

Accuracyofplane:60%

Accuracyofcar:46%

Accuracyofbird:44%

Accuracyofcat:35%

Accuracyofdeer:38%

Accuracyofdog:43%

Accuracyoffrog:57%

Accuracyofhorse:76%

Accuracyofship:71%

Accuracyoftruck:74%

3 在GPU上訓(xùn)練

下面這句話會(huì)遞歸遍歷全部的模塊并且將它們的參數(shù)和緩沖區(qū)轉(zhuǎn)到CUDA tensors。

net.cuda()

記住,還需要在每一步將輸入和目標(biāo)值發(fā)送到GPU。

inputs, labels = Variable(inputs.cuda()), Variable(labels.cuda())

當(dāng)網(wǎng)絡(luò)非常大而復(fù)雜的時(shí)候,這種加速是非常明顯的。

責(zé)任編輯:xj
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4814

    瀏覽量

    103698
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122812
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    13974
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何優(yōu)化BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)

    優(yōu)化BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率是提高模型訓(xùn)練效率和性能的關(guān)鍵步驟。以下是些優(yōu)化BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率的方
    的頭像 發(fā)表于 02-12 15:51 ?943次閱讀

    BP神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點(diǎn)分析

    學(xué)習(xí)能力 : BP神經(jīng)網(wǎng)絡(luò)能夠通過(guò)訓(xùn)練數(shù)據(jù)自動(dòng)調(diào)整網(wǎng)絡(luò)參數(shù),實(shí)現(xiàn)對(duì)輸入數(shù)據(jù)的分類、回歸等任務(wù),無(wú)需人工進(jìn)行復(fù)雜的特征工程。 泛化能力強(qiáng)
    的頭像 發(fā)表于 02-12 15:36 ?930次閱讀

    BP神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)的關(guān)系

    ),是種多層前饋神經(jīng)網(wǎng)絡(luò),它通過(guò)反向傳播算法進(jìn)行訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)由輸入層、個(gè)或多個(gè)隱藏層和
    的頭像 發(fā)表于 02-12 15:15 ?867次閱讀

    如何訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)模型

    BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)種經(jīng)典的人工神經(jīng)網(wǎng)絡(luò)模型,其訓(xùn)練過(guò)程主要分為兩個(gè)階段:前向傳播和反向傳播。以下是
    的頭像 發(fā)表于 02-12 15:10 ?931次閱讀

    深度學(xué)習(xí)入門(mén):簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實(shí)現(xiàn)

    深度學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)是核心模型。今天我們用 Python 和 NumPy 構(gòu)建個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 01-23 13:52 ?534次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)工具與框架

    : TensorFlow是由Google Brain團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源機(jī)器學(xué)習(xí)框架,它支持多種深度學(xué)習(xí)模型的構(gòu)建和訓(xùn)練,包括卷積神經(jīng)網(wǎng)絡(luò)。Ten
    的頭像 發(fā)表于 11-15 15:20 ?672次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的比較

    深度學(xué)習(xí)領(lǐng)域,神經(jīng)網(wǎng)絡(luò)模型被廣泛應(yīng)用于各種任務(wù),如圖像識(shí)別、自然語(yǔ)言處理和游戲智能等。其中,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)是兩種常
    的頭像 發(fā)表于 11-15 14:53 ?1882次閱讀

    深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)模型

    深度學(xué)習(xí)近年來(lái)在多個(gè)領(lǐng)域取得了顯著的進(jìn)展,尤其是在圖像識(shí)別、語(yǔ)音識(shí)別和自然語(yǔ)言處理等方面。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)
    的頭像 發(fā)表于 11-15 14:52 ?851次閱讀

    深度學(xué)習(xí)框架中的LSTM神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)

    長(zhǎng)短期記憶(LSTM)網(wǎng)絡(luò)種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),能夠學(xué)習(xí)長(zhǎng)期依賴信息。與傳統(tǒng)的RNN相比,LSTM通過(guò)引入門(mén)控機(jī)制來(lái)解決梯度消
    的頭像 發(fā)表于 11-13 10:16 ?1068次閱讀

    LSTM神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)準(zhǔn)備方法

    LSTM(Long Short-Term Memory,長(zhǎng)短期記憶)神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)準(zhǔn)備方法是個(gè)關(guān)鍵步驟,它直接影響到模型的性能和效果。以下是
    的頭像 發(fā)表于 11-13 10:08 ?2131次閱讀

    LSTM神經(jīng)網(wǎng)絡(luò)在語(yǔ)音識(shí)別中的應(yīng)用實(shí)例

    語(yǔ)音識(shí)別技術(shù)是人工智能領(lǐng)域的個(gè)重要分支,它使計(jì)算機(jī)能夠理解和處理人類語(yǔ)言。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,特別是長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)的引
    的頭像 發(fā)表于 11-13 10:03 ?1859次閱讀

    LSTM神經(jīng)網(wǎng)絡(luò)在時(shí)間序列預(yù)測(cè)中的應(yīng)用

    時(shí)間序列預(yù)測(cè)是數(shù)據(jù)分析中的個(gè)重要領(lǐng)域,它涉及到基于歷史數(shù)據(jù)預(yù)測(cè)未來(lái)值。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)因其在處理序列
    的頭像 發(fā)表于 11-13 09:54 ?2059次閱讀

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?666次閱讀
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>訓(xùn)練</b>的方法

    關(guān)于卷積神經(jīng)網(wǎng)絡(luò),這些概念你厘清了么~

    許多種類型,但本文將只關(guān)注卷積神經(jīng)網(wǎng)絡(luò)(CNN),其主要應(yīng)用領(lǐng)域是對(duì)輸入數(shù)據(jù)的模式識(shí)別和對(duì)象分類。CNN是種用于深度學(xué)習(xí)的 人工
    發(fā)表于 10-24 13:56

    FPGA在深度神經(jīng)網(wǎng)絡(luò)中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)作為其核心算法之,在圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等領(lǐng)域取得了顯著成果。然而,傳統(tǒng)的深度
    的頭像 發(fā)表于 07-24 10:42 ?1212次閱讀