亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pytorch 帶batch的tensor類型圖像顯示操作

 更新時間:2021年05月20日 14:38:55   作者:Xavier Jiezou  
這篇文章主要介紹了pytorch 帶batch的tensor類型圖像顯示操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

項目場景

pytorch訓練時我們一般把數(shù)據(jù)集放到數(shù)據(jù)加載器里,然后分批拿出來訓練。訓練前我們一般還要看一下訓練數(shù)據(jù)長啥樣,也就是訓練數(shù)據(jù)集可視化。

那么如何顯示dataloader里面帶batch的tensor類型的圖像呢?

顯示圖像

繪圖最常用的庫就是matplotlib:

pip install matplotlib

顯示圖像會用到matplotlib.pyplot.imshow方法。查閱官方文檔可知,該方法接收的圖像的通道數(shù)要放到后面:

在這里插入圖片描述

數(shù)據(jù)加載器中數(shù)據(jù)的維度是[B, C, H, W],我們每次只拿一個數(shù)據(jù)出來就是[C, H, W],而matplotlib.pyplot.imshow要求的輸入維度是[H, W, C],所以我們需要交換一下數(shù)據(jù)維度,把通道數(shù)放到最后面,這里用到pytorch里面的permute方法(transpose方法也行,不過要交換兩次,沒這個方便,numpy中的transpose方法倒是可以一次交換完成)

用法示例如下:

>>> x = torch.randn(2, 3, 5)
>>> x.size()
torch.Size([2, 3, 5])
>>> x.permute(1, 2, 0).size()
torch.Size([3, 5, 2])

代碼示例

#%% 導入模塊
import torch
import matplotlib.pyplot as plt
from torchvision.utils import make_grid
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
#%% 下載數(shù)據(jù)集
train_file = datasets.MNIST(
    root='./dataset/',
    train=True,
    transform=transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.1307,), (0.3081,))
    ]),
    download=True
)
#%% 制作數(shù)據(jù)加載器
train_loader = DataLoader(
    dataset=train_file,
    batch_size=9,
    shuffle=True
)
#%% 訓練數(shù)據(jù)可視化
images, labels = next(iter(train_loader))
print(images.size())  # torch.Size([9, 1, 28, 28])
plt.figure(figsize=(9, 9))
for i in range(9):
    plt.subplot(3, 3, i+1)
    plt.title(labels[i].item())
    plt.imshow(images[i].permute(1, 2, 0), cmap='gray')
    plt.axis('off')
plt.show()

這里以mnist數(shù)據(jù)集為例,演示一下顯示效果。我這個代碼其實還有一點小問題。數(shù)據(jù)增強的時候我不是進行標準化了嘛,就是在第7行代碼:Normalize((0.1307,), (0.3081,))。

所以,如果你想查看訓練集的原始圖像,還得反標準化。

標準化:image = (image-mean)/std

反標準化:image = image*std+mean

我拿imagenet中的一個螞蟻和蜜蜂的子集做了一下實驗,標準化前后的區(qū)別還是很明顯的:

在這里插入圖片描述

最終效果

在這里插入圖片描述

補充:PIL,plt顯示tensor類型的圖像

該方法針對顯示Dataloader讀取的圖像

PIL 與plt中對應(yīng)操作不同,但原理是一樣的,我試過用下方代碼Image的方法在plt上show失敗了,原因暫且不知。

 # 方法1:Image.show()
 # transforms.ToPILImage()中有一句
 # npimg = np.transpose(pic.numpy(), (1, 2, 0))
 # 因此pic只能是3-D Tensor,所以要用image[0]消去batch那一維
 img = transforms.ToPILImage(image[0])
 img.show()

 # 方法2:plt.imshow(ndarray)
 img = image[0] # plt.imshow()只能接受3-D Tensor,所以也要用image[0]消去batch那一維
 img = img.numpy() # FloatTensor轉(zhuǎn)為ndarray
 img = np.transpose(img, (1,2,0)) # 把channel那一維放到最后
 # 顯示圖片
 plt.imshow(img)
 plt.show()
 cnt += 1

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全

    Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方

    本文主要介紹了Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧Chat?Gpt<BR>
    2023-07-07
  • 用python生成mysql數(shù)據(jù)庫結(jié)構(gòu)文檔

    用python生成mysql數(shù)據(jù)庫結(jié)構(gòu)文檔

    大家好,本篇文章主要講的是用python生成mysql數(shù)據(jù)庫結(jié)構(gòu)文檔,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python pandas 對series和dataframe的重置索引reindex方法

    python pandas 對series和dataframe的重置索引reindex方法

    今天小編就為大家分享一篇python pandas 對series和dataframe的重置索引reindex方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python對站點數(shù)據(jù)做EOF且做插值繪制填色圖

    python對站點數(shù)據(jù)做EOF且做插值繪制填色圖

    這篇文章主要介紹了python對站點數(shù)據(jù)做EOF且做插值繪制填色圖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,,需要的小伙伴可以參考一下
    2022-09-09
  • Django集成富文本編輯器summernote的實現(xiàn)步驟

    Django集成富文本編輯器summernote的實現(xiàn)步驟

    在最近的項目中小編使用了這個富文本編輯器,選擇它的主要原因是配置非常簡單,默認支持普通用戶上傳圖片(不像ckeditor默認只有staff user才能上傳圖片。如果要讓普通用戶上傳圖片,還需修改源碼裝飾器)?,F(xiàn)在讓我們來看看如何使用這個富文本編輯器
    2021-05-05
  • FastApi如何快速構(gòu)建一個web項目的實現(xiàn)

    FastApi如何快速構(gòu)建一個web項目的實現(xiàn)

    本文主要介紹了FastApi如何快速構(gòu)建一個web項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 一個簡單的python爬蟲程序 爬取豆瓣熱度Top100以內(nèi)的電影信息

    一個簡單的python爬蟲程序 爬取豆瓣熱度Top100以內(nèi)的電影信息

    這篇文章主要為大家詳細介紹了一個簡單的python爬蟲程序,爬取豆瓣熱度Top100以內(nèi)的電影信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python中下劃線含義詳解

    Python中下劃線含義詳解

    大家好,本篇文章主要講的是Python中下劃線含義詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • PyQt彈出式對話框的常用方法及標準按鈕類型

    PyQt彈出式對話框的常用方法及標準按鈕類型

    這篇文章主要為大家詳細介紹了PyQt彈出式對話框的常用方法及標準按鈕類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Python中Numpy和Matplotlib的基本使用指南

    Python中Numpy和Matplotlib的基本使用指南

    numpy庫處理的最基礎(chǔ)數(shù)據(jù)類型是由同種元素構(gòu)成的多維數(shù)組(ndarray),而matplotlib 是提供數(shù)據(jù)繪圖功能的第三方庫,其pyplot子庫主要用于實現(xiàn)各種數(shù)據(jù)展示圖形的繪制,這篇文章主要給大家介紹了關(guān)于Python中Numpy和Matplotlib的基本使用指南,需要的朋友可以參考下
    2021-11-11

最新評論