最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch: Softmax多分類實(shí)戰(zhàn)操作

 更新時間:2020年07月07日 15:02:45   作者:AI小白入門  
這篇文章主要介紹了PyTorch: Softmax多分類實(shí)戰(zhàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

多分類一種比較常用的做法是在最后一層加softmax歸一化,值最大的維度所對應(yīng)的位置則作為該樣本對應(yīng)的類。本文采用PyTorch框架,選用經(jīng)典圖像數(shù)據(jù)集mnist學(xué)習(xí)一波多分類。

MNIST數(shù)據(jù)集

MNIST 數(shù)據(jù)集(手寫數(shù)字?jǐn)?shù)據(jù)集)來自美國國家標(biāo)準(zhǔn)與技術(shù)研究所, National Institute of Standards and Technology (NIST). 訓(xùn)練集 (training set) 由來自 250 個不同人手寫的數(shù)字構(gòu)成, 其中 50% 是高中學(xué)生, 50% 來自人口普查局 (the Census Bureau) 的工作人員. 測試集(test set) 也是同樣比例的手寫數(shù)字?jǐn)?shù)據(jù)。MNIST數(shù)據(jù)集下載地址:http://yann.lecun.com/exdb/mnist/。手寫數(shù)字的MNIST數(shù)據(jù)庫包括60,000個的訓(xùn)練集樣本,以及10,000個測試集樣本。

其中:

train-images-idx3-ubyte.gz (訓(xùn)練數(shù)據(jù)集圖片)

train-labels-idx1-ubyte.gz (訓(xùn)練數(shù)據(jù)集標(biāo)記類別)

t10k-images-idx3-ubyte.gz: (測試數(shù)據(jù)集)

t10k-labels-idx1-ubyte.gz(測試數(shù)據(jù)集標(biāo)記類別)

MNIST數(shù)據(jù)集是經(jīng)典圖像數(shù)據(jù)集,包括10個類別(0到9)。每一張圖片拉成向量表示,如下圖784維向量作為第一層輸入特征。

Softmax分類

softmax函數(shù)的本質(zhì)就是將一個K 維的任意實(shí)數(shù)向量壓縮(映射)成另一個K維的實(shí)數(shù)向量,其中向量中的每個元素取值都介于(0,1)之間,并且壓縮后的K個值相加等于1(變成了概率分布)。在選用Softmax做多分類時,可以根據(jù)值的大小來進(jìn)行多分類的任務(wù),如取權(quán)重最大的一維。softmax介紹和公式網(wǎng)上很多,這里不介紹了。下面使用Pytorch定義一個多層網(wǎng)絡(luò)(4個隱藏層,最后一層softmax概率歸一化),輸出層為10正好對應(yīng)10類。

PyTorch實(shí)戰(zhàn)

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
from torch.autograd import Variable

# Training settings
batch_size = 64

# MNIST Dataset
train_dataset = datasets.MNIST(root='./mnist_data/',
                train=True,
                transform=transforms.ToTensor(),
                download=True)

test_dataset = datasets.MNIST(root='./mnist_data/',
               train=False,
               transform=transforms.ToTensor())

# Data Loader (Input Pipeline)
train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
                      batch_size=batch_size,
                      shuffle=True)

test_loader = torch.utils.data.DataLoader(dataset=test_dataset,
                     batch_size=batch_size,
                     shuffle=False)
class Net(nn.Module):
  def __init__(self):
    super(Net, self).__init__()
    self.l1 = nn.Linear(784, 520)
    self.l2 = nn.Linear(520, 320)
    self.l3 = nn.Linear(320, 240)
    self.l4 = nn.Linear(240, 120)
    self.l5 = nn.Linear(120, 10)

  def forward(self, x):
    # Flatten the data (n, 1, 28, 28) --> (n, 784)
    x = x.view(-1, 784)
    x = F.relu(self.l1(x))
    x = F.relu(self.l2(x))
    x = F.relu(self.l3(x))
    x = F.relu(self.l4(x))
    return F.log_softmax(self.l5(x), dim=1)
    #return self.l5(x)
model = Net()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
def train(epoch):

  # 每次輸入barch_idx個數(shù)據(jù)
  for batch_idx, (data, target) in enumerate(train_loader):
    data, target = Variable(data), Variable(target)

    optimizer.zero_grad()
    output = model(data)
    # loss
    loss = F.nll_loss(output, target)
    loss.backward()
    # update
    optimizer.step()
    if batch_idx % 200 == 0:
      print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
        epoch, batch_idx * len(data), len(train_loader.dataset),
        100. * batch_idx / len(train_loader), loss.data[0]))
def test():
  test_loss = 0
  correct = 0
  # 測試集
  for data, target in test_loader:
    data, target = Variable(data, volatile=True), Variable(target)
    output = model(data)
    # sum up batch loss
    test_loss += F.nll_loss(output, target).data[0]
    # get the index of the max
    pred = output.data.max(1, keepdim=True)[1]
    correct += pred.eq(target.data.view_as(pred)).cpu().sum()

  test_loss /= len(test_loader.dataset)
  print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
    test_loss, correct, len(test_loader.dataset),
    100. * correct / len(test_loader.dataset)))

for epoch in range(1,6):
  train(epoch)
  test()

輸出結(jié)果:
Train Epoch: 1 [0/60000 (0%)]	Loss: 2.292192
Train Epoch: 1 [12800/60000 (21%)]	Loss: 2.289466
Train Epoch: 1 [25600/60000 (43%)]	Loss: 2.294221
Train Epoch: 1 [38400/60000 (64%)]	Loss: 2.169656
Train Epoch: 1 [51200/60000 (85%)]	Loss: 1.561276

Test set: Average loss: 0.0163, Accuracy: 6698/10000 (67%)

Train Epoch: 2 [0/60000 (0%)]	Loss: 0.993218
Train Epoch: 2 [12800/60000 (21%)]	Loss: 0.859608
Train Epoch: 2 [25600/60000 (43%)]	Loss: 0.499748
Train Epoch: 2 [38400/60000 (64%)]	Loss: 0.422055
Train Epoch: 2 [51200/60000 (85%)]	Loss: 0.413933

Test set: Average loss: 0.0065, Accuracy: 8797/10000 (88%)

Train Epoch: 3 [0/60000 (0%)]	Loss: 0.465154
Train Epoch: 3 [12800/60000 (21%)]	Loss: 0.321842
Train Epoch: 3 [25600/60000 (43%)]	Loss: 0.187147
Train Epoch: 3 [38400/60000 (64%)]	Loss: 0.469552
Train Epoch: 3 [51200/60000 (85%)]	Loss: 0.270332

Test set: Average loss: 0.0045, Accuracy: 9137/10000 (91%)

Train Epoch: 4 [0/60000 (0%)]	Loss: 0.197497
Train Epoch: 4 [12800/60000 (21%)]	Loss: 0.234830
Train Epoch: 4 [25600/60000 (43%)]	Loss: 0.260302
Train Epoch: 4 [38400/60000 (64%)]	Loss: 0.219375
Train Epoch: 4 [51200/60000 (85%)]	Loss: 0.292754

Test set: Average loss: 0.0037, Accuracy: 9277/10000 (93%)

Train Epoch: 5 [0/60000 (0%)]	Loss: 0.183354
Train Epoch: 5 [12800/60000 (21%)]	Loss: 0.207930
Train Epoch: 5 [25600/60000 (43%)]	Loss: 0.138435
Train Epoch: 5 [38400/60000 (64%)]	Loss: 0.120214
Train Epoch: 5 [51200/60000 (85%)]	Loss: 0.266199

Test set: Average loss: 0.0026, Accuracy: 9506/10000 (95%)
Process finished with exit code 0

隨著訓(xùn)練迭代次數(shù)的增加,測試集的精確度還是有很大提高的。并且當(dāng)?shù)螖?shù)為5時,使用這種簡單的網(wǎng)絡(luò)可以達(dá)到95%的精確度。

以上這篇PyTorch: Softmax多分類實(shí)戰(zhàn)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python tkinter實(shí)現(xiàn)日期選擇器

    Python tkinter實(shí)現(xiàn)日期選擇器

    這篇文章主要為大家詳細(xì)介紹了Python tkinter實(shí)現(xiàn)日期選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Python代碼部署的三種加密方案

    Python代碼部署的三種加密方案

    本文主要介紹了Python代碼部署的三種加密方案,主要介紹了代碼混淆、代碼編譯、代碼打包這三種,具有一定的參考價值,感興趣的可以了解一下
    2023-02-02
  • Python中文件讀取與保存代碼示例

    Python中文件讀取與保存代碼示例

    Python中保存文件是一項(xiàng)非常基本的任務(wù),它允許我們將程序輸出保存到磁盤上,以便以后使用或與他人共享,這篇文章主要給大家介紹了關(guān)于Python中文件讀取與保存的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • 一篇文章帶你了解python標(biāo)準(zhǔn)庫--random模塊

    一篇文章帶你了解python標(biāo)準(zhǔn)庫--random模塊

    這篇文章主要給大家介紹了關(guān)于Python中random模塊常用方法的使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • python實(shí)現(xiàn)聚類算法原理

    python實(shí)現(xiàn)聚類算法原理

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)聚類算法原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python使用ddddocr庫識別滑動驗(yàn)證碼簡單代碼示例

    python使用ddddocr庫識別滑動驗(yàn)證碼簡單代碼示例

    這篇文章主要介紹了如何使用ddddocr庫來識別滑塊驗(yàn)證碼,并提供了一個示例代碼和識別結(jié)果,同時提醒注意ddddocr庫的大小限制,可能會影響某些無服務(wù)器函數(shù)的部署,需要的朋友可以參考下
    2024-11-11
  • Python利用pywin32實(shí)現(xiàn)自動操作電腦

    Python利用pywin32實(shí)現(xiàn)自動操作電腦

    在windows系統(tǒng)上,重復(fù)性的操作可以用Python腳本來完成,其中常用的模塊是win32gui、win32con、win32api,要使用這三個模塊需要先安裝pywin32。本文就為大家介紹了如何利用這些模塊實(shí)現(xiàn)自動操作電腦,感興趣的可以了解一下
    2022-11-11
  • python和JavaScript哪個容易上手

    python和JavaScript哪個容易上手

    在本篇文章里小編給大家分享的是一篇關(guān)于python和JavaScript哪個容易上手的相關(guān)知識點(diǎn)文章,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python之PyUnit單元測試實(shí)例

    Python之PyUnit單元測試實(shí)例

    這篇文章主要介紹了Python之PyUnit單元測試實(shí)例,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • Python利用PyPDF2庫實(shí)現(xiàn)輕松提取PDF文本

    Python利用PyPDF2庫實(shí)現(xiàn)輕松提取PDF文本

    ython中的PyPDF2庫是一個非常有用的工具,無論您是需要分析PDF文檔中的內(nèi)容還是需要在文檔中搜索特定的信息,PyPDF2都可以幫助您輕松實(shí)現(xiàn)這些任務(wù),下面我們就來學(xué)習(xí)一下如何利用PyPDF2提取PDF文本吧
    2023-09-09

最新評論

黄陵县| 丽水市| 乃东县| 晋中市| 巩义市| 台中市| 苏州市| 巴中市| 大悟县| 吉安市| 河源市| 华阴市| 雷波县| 吉安市| 逊克县| 博野县| 桐梓县| 灵宝市| 长治市| 鄯善县| 新泰市| 买车| 安化县| 延庆县| 安顺市| 长武县| 鸡西市| 揭西县| 楚雄市| 邳州市| 方山县| 溆浦县| 那坡县| 扶风县| 武功县| 皮山县| 堆龙德庆县| 顺昌县| 临朐县| 巫山县| 抚州市|