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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[pytorch、学习] - 3.5 图像分类数据集

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [pytorch、学习] - 3.5 图像分类数据集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考

3.5. 圖像分類數據集

在介紹shftmax回歸的實現前我們先引入一個多類圖像分類數據集

本章開始使用pytorch實現啦~

本節我們將使用torchvision包,它是服務于PyTorch深度學習框架的,主要用來構建計算機視覺模型。torchvision主要由以下幾部分構成:

  • torchvision.datasets: 一些加載數據的函數及常用的數據集接口
  • torchvision.models: 包含常用的模型(含預訓練模型),例如 AlexNet、VGG、ResNet等
  • torchvision.transforms: 常用的圖片變換,例如裁剪、旋轉等;
  • torchvision.utils: 其他的一些有用的方法
  • 3.5.1. 獲取數據集

    import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import time import sys sys.path.append('..') # 為了導入上層的d2lzh_pytorch import d2lzh_pytorch as d2l

    下面,我們通過torchvision的torchvision.dataset來下載這個數據集。第一次調用時會自動從網上下載獲取數據。我們通過參數train來指定獲取訓練集或測試數據集(testing data)。

    mnist_train = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', train=True, download=True, transform=transforms.ToTensor()) mnist_test = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', train=False, download=True, transform=transforms.ToTensor())

    數據集下載如果比較慢,建議通過網址下載4個,然后根據下載的目錄導入即可。如下圖,是下載了(4個文件,這里只說一個,其他類似)train-images-idx3-ubyte.gz到本地的目錄C:\Users\1/Datasets/FashionMNIST\FashionMNIST\raw\下.可從網址直接下載4個(無需解壓)到該目錄下在執行以上代碼.

    # 上面的 mnist_train 和 mnist_test都是 torch.utils.data.Datasets的子類 # 所以我們可以用len()來獲取該數據集的大小,還可以用下標來獲取具體的一個樣本 # 訓練集中和測試集中的每個類別的圖像分別是6000和1000。因為有10個類別,所以訓練集和測試集的樣本數分別為60000和10000 print(type(mnist_train)) # <class 'totchvision.datasets.mnist.FashionMNIST'> print(len(mnist_train), len(mnist_test)) # 60000 10000 # 通過下標訪問任意樣本 feature, label = mnist_train[0] print(feature.shape, label) # torch.Size([1, 28, 28]) tensor(5)


    變量feature對應高和寬均為28像素的圖像。由于我們使用了transforms.ToTensor(),所以每個像素的數值為[0.0, 1.0]的32位浮點數。需要注意的是,feature的尺寸是(C * H * W)的,而不是(H * W * C)。第一維是通道數,因為數據通道數為1.后面兩維分別是圖像的高和寬

    Fashion-MNIST中一共包括了10個類別,分別0、1、2、3、4、5、6、7、8、9

    # 本函數已保存在d2lzh包中方便以后使用 def get_fashion_mnist_labels(labels): # text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat', 'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']text_labels = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']return [text_labels[int(i)] for i in labels]# 定義一個可以在一行里面畫出多張圖像和對應標簽的函數 def show_fashion_mnist(images, labels):d2l.use_svg_display()_, figs = plt.subplots(1, len(images), figsize= (12, 12))for f, img, lbl in zip(figs, images, labels):f.imshow(img.view((28, 28)).numpy())f.set_title(lbl)f.axes.get_xaxis().set_visible(False)f.axes.get_yaxis().set_visible(False)plt.show()X, y = [], [] for i in range(10):# 從數據集中取出10個X.append(mnist_train[i][0])y.append(mnist_train[i][1]) show_fashion_mnist(X, get_fashion_mnist_labels(y))

    3.5.2. 讀取小批量

    我們將在訓練數據集上訓練模型,并將訓練好的模型在測試集上評價模型的表現。前面說過, mnist_train 是torch.utils.data.Dataset的子類,所以我們可以將其傳入torch.utils.data.DataLoader來創建一個讀取小批量數據樣本的DataLoader實例

    batch_size = 256 if sys.platform.startswith('win'):num_workers = 0 # 0表示不用額外的進程來加速讀取數據 else:num_workers = 4 train_iter = torch.utils.data.DataLoader(mnist_train, batch_size=batch_size, shuffle=True, num_workers=num_workers) test_iter = torch.utils.data.DataLoader(mnist_test, batch_size=batch_size, shuffle=False, num_workers=num_workers)start = time.time() for X,y in train_iter:continue print('%.2f sec' % (time.time() - start))

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的[pytorch、学习] - 3.5 图像分类数据集的全部內容,希望文章能夠幫你解決所遇到的問題。

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