好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch 帶batch的tensor類型圖像顯示操作

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

熱門標簽:沈陽防封電銷卡品牌 富錦商家地圖標注 沈陽外呼系統呼叫系統 池州外呼調研線路 如何申請400電話費用 武漢外呼系統平臺 外呼系統哪些好辦 沈陽人工外呼系統價格 江西省地圖標注

項目場景

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

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

顯示圖像

繪圖最常用的庫就是matplotlib:

pip install matplotlib

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

數據加載器中數據的維度是[B, C, H, W],我們每次只拿一個數據出來就是[C, H, W],而matplotlib.pyplot.imshow要求的輸入維度是[H, W, C],所以我們需要交換一下數據維度,把通道數放到最后面,這里用到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
#%% 下載數據集
train_file = datasets.MNIST(
    root='./dataset/',
    train=True,
    transform=transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.1307,), (0.3081,))
    ]),
    download=True
)
#%% 制作數據加載器
train_loader = DataLoader(
    dataset=train_file,
    batch_size=9,
    shuffle=True
)
#%% 訓練數據可視化
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數據集為例,演示一下顯示效果。我這個代碼其實還有一點小問題。數據增強的時候我不是進行標準化了嘛,就是在第7行代碼:Normalize((0.1307,), (0.3081,))。

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

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

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

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

最終效果

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

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

PIL 與plt中對應操作不同,但原理是一樣的,我試過用下方代碼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轉為ndarray
 img = np.transpose(img, (1,2,0)) # 把channel那一維放到最后
 # 顯示圖片
 plt.imshow(img)
 plt.show()
 cnt += 1

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

您可能感興趣的文章:
  • Pytorch自定義Dataset和DataLoader去除不存在和空數據的操作
  • pytorch Dataset,DataLoader產生自定義的訓練數據案例
  • PyTorch實現重寫/改寫Dataset并載入Dataloader
  • 一文弄懂Pytorch的DataLoader, DataSet, Sampler之間的關系
  • PyTorch 解決Dataset和Dataloader遇到的問題
  • PyTorch 如何自動計算梯度
  • pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
  • 我對PyTorch dataloader里的shuffle=True的理解
  • 解決pytorch下只打印tensor的數值不打印出device等信息的問題
  • Pytorch 如何查看、釋放已關閉程序占用的GPU資源
  • pytorch中的squeeze函數、cat函數使用
  • Pytorch數據讀取之Dataset和DataLoader知識總結

標簽:黑龍江 阿里 潛江 呂梁 銅川 常德 株洲 通遼

巨人網絡通訊聲明:本文標題《pytorch 帶batch的tensor類型圖像顯示操作》,本文關鍵詞  pytorch,帶,batch,的,tensor,類型,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 帶batch的tensor類型圖像顯示操作》相關的同類信息!
  • 本頁收集關于pytorch 帶batch的tensor類型圖像顯示操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日bb| 国产精品私拍PANS大尺度在线| 一秒钟高清在线观看免费完整版| 乖?好舒服?把腿张开蜜桃文章| 久久GOGO国模裸体人体| 免费视频网站看v片| 久久久久亚洲精品電器有限公司| 嗯啊嗯啊爽| 高h全肉调教bl| 嫩奶头被老汉吸得又红又肿| 巨胸大乳尤物安斋拉拉| 韩国三级在浴室做| 亚洲精品乱码久久久久久蜜桃麻豆| 性俄罗斯交XXXXX免费视频| 国产精品免费看久久久香蕉| 欧美另类亚洲一区二区| 97人妻无码一区二区三区精品免费| 国产性色A∨在线看免费| 色戒有几段床戏分别在哪些时间| 亚洲一区二区中文字5566| 在线黄色大片| 亚洲乱码卡一卡二卡三| 在线观看免费aaa高清完整版| 免费看黄软件| 艾栗栗国产精品视频一区| 巜女员工的滋味3在线观看| 日韩成年人电影| 欧美日韩高清不卡免费观看| 国产片欧美片亚洲片久久综合| 久久99热这里只频精品6中文字幕| 国产精品一品二区三区的使用体验| 久操视频网站| 厨房里退掉短裙| 老太婆日起舒服| 365看片在线直播| 男人亲女人肌肌对肌肌视频| 99久久婷婷国产综合精品青草千草| 全部古装三?片| 98色花堂永久地址入口 | 伦理片我的性老师| 国产女人丨8毛片水多女人|