chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

利用Python和PyTorch處理面向?qū)ο蟮臄?shù)據(jù)集

YCqV_FPGA_EETre ? 來源:XILINX開發(fā)者社區(qū) ? 作者:賽靈思開發(fā)者 ? 2021-08-25 15:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇是利用 Python 和 PyTorch 處理面向?qū)ο蟮臄?shù)據(jù)集系列博客的第 2 篇。

如需閱讀第 1 篇:原始數(shù)據(jù)和數(shù)據(jù)集,請參閱此處。

我們在第 1 部分中已定義 MyDataset 類,現(xiàn)在,讓我們來例化 MyDataset 對象

此可迭代對象是與原始數(shù)據(jù)交互的接口,在整個訓練過程中都有巨大作用。

第 2 部分:創(chuàng)建數(shù)據(jù)集對象

■輸入 [9]:

mydataset = MyDataset(isValSet_bool = None, raw_data_path = raw_data_path, norm = False, resize = True, newsize = (64, 64))

以下是該對象的一些使用示例:

■輸入 [10]:

# 對象操作示例。

# 此操作用于調(diào)用 method __getitem__ 并從第 6 個樣本獲取標簽

mydataset[6][1]

■輸出 [10]:

0

■輸入 [11]:

# 此操作用于在類聲明后打印注釋

MyDataset.__doc__

■輸出 [11]:

‘Interface class to raw data, providing the total number of samples in the dataset and a preprocessed item’

■輸入 [12]:

# 此操作用于調(diào)用 method __len__

len(mydataset)

■輸出 [12]:

49100

■輸入 [13]:

# 此操作用于觸發(fā) method __str__

print(mydataset)

原始數(shù)據(jù)路徑為 。/raw_data/data_images/《raw samples》

可迭代對象的重要性

訓練期間,將向模型提供多批次樣本??傻?mydataset 是獲得高級輕量代碼的關(guān)鍵。

以下提供了可迭代對象的 2 個使用示例。

示例 1:

我們可以直接獲取第 3 個樣本張量:

■輸入 [14]:

mydataset.__getitem__(3)[0].shape

■輸出 [14]:

torch.Size([3, 64, 64])

與以下操作作用相同

■輸入 [15]:

mydataset[3][0].shape

■輸出 [15]:

torch.Size([3, 64, 64])

示例 2:

我們可以對文件夾中的圖像進行解析,并移除黑白圖像:

■輸入 [ ]:

# 數(shù)據(jù)集訪問示例:創(chuàng)建 1 個包含標簽的新文件,移除黑白圖像

if os.path.exists(raw_data_path + ‘/’+ “l(fā)abels_new.txt”):

os.remove(raw_data_path + ‘/’+ “l(fā)abels_new.txt”)

with open(raw_data_path + ‘/’+ “l(fā)abels_new.txt”, “a”) as myfile:

for item, info in mydataset:

if item != None:

if item.shape[0]==1:

# os.remove(raw_data_path + ‘/’ + info.SampleName)

print(‘C = {}; H = {}; W = {}; info = {}’.format(item.shape[0], item.shape[1], item.shape[2], info))

else:

#print(info.SampleName + ‘ ’ + str(info.SampleLabel))

myfile.write(info.SampleName + ‘ ’ + str(info.SampleLabel) + ‘ ’)

■輸入 [ ]:

# 查找具有非期望格式的樣本

with open(raw_data_path + ‘/’+ “l(fā)abels.txt”, “a”) as myfile:

for item, info in mydataset:

if item != None:

if item.shape[0]!=3:

# os.remove(raw_data_path + ‘/’ + info.SampleName)

print(‘C = {}; H = {}; W = {}; info = {}’.format(item.shape[0], item.shape[1], item.shape[2], info))

修改標簽文件后,請務(wù)必更新緩存:

■輸入 [ ]:

if os.path.exists(raw_data_path + ‘/’+ “l(fā)abels_new.txt”):

os.rename(raw_data_path + ‘/’+ “l(fā)abels.txt”, raw_data_path + ‘/’+ “l(fā)abels_orig.txt”)

os.rename(raw_data_path + ‘/’+ “l(fā)abels_new.txt”, raw_data_path + ‘/’+ “l(fā)abels.txt”)

@functools.lru_cache(1)

def getSampleInfoList(raw_data_path):

sample_list = []

with open(str(raw_data_path) + ‘/labels.txt’, “r”) as f:

reader = csv.reader(f, delimiter = ‘ ’)

for i, row in enumerate(reader):

imgname = row[0]

label = int(row[1])

sample_list.append(DataInfoTuple(imgname, label))

sample_list.sort(reverse=False, key=myFunc)

return sample_list

del mydataset

mydataset = MyDataset(isValSet_bool = None, raw_data_path = ‘。./。./raw_data/data_images’, norm = False)

len(mydataset)

您可通過以下鏈接閱讀了解有關(guān) PyTorch 中的可迭代數(shù)據(jù)庫的更多信息:

https://pytorch.org/docs/stable/data.html

歸一化

應(yīng)對所有樣本張量計算平均值和標準差。

如果數(shù)據(jù)集較小,可以嘗試在內(nèi)存中對其進行直接操作:使用 torch.stack 即可創(chuàng)建 1 個包含所有樣本張量的棧。

可迭代對象 mydataset 支持簡潔精美的代碼。

使用“view”即可保留 R、G 和 B 這 3 個通道,并將其余所有維度合并為 1 個維度。

使用“mean”即可計算維度 1 的每個通道的平均值。

請參閱附件中有關(guān) dim 使用的說明。

■輸入 [16]:

imgs = torch.stack([img_t for img_t, _ in mydataset], dim = 3)

■輸入 [17]:

#im_mean = imgs.view(3, -1).mean(dim=1).tolist()

im_mean = imgs.view(3, -1).mean(dim=1)

im_mean

■輸出 [17]:

tensor([0.4735, 0.4502, 0.4002])

■輸入 [18]:

im_std = imgs.view(3, -1).std(dim=1).tolist()

im_std

■輸出 [18]:

[0.28131285309791565, 0.27447444200515747, 0.2874436378479004]

■輸入 [19]:

normalize = transforms.Normalize(mean=[0.4735, 0.4502, 0.4002], std=[0.28131, 0.27447, 0.28744])

# free memory

del imgs

下面,我們將再次構(gòu)建數(shù)據(jù)集對象,但這次將對此對象進行歸一化:

■輸入 [21]:

mydataset = MyDataset(isValSet_bool = None, raw_data_path = raw_data_path, norm = True, resize = True, newsize = (64, 64))

由于采用了歸一化,因此張量值被轉(zhuǎn)換至范圍 0..1 之內(nèi),并進行剪切操作。

■輸入 [22]:

original = Image.open(‘。./。./raw_data/data_images/img_00009111.JPEG’)

fig, axs = plt.subplots(1, 2, figsize=(10, 3))

axs[0].set_title(‘clipped tensor’)

axs[0].imshow(mydataset[5][0].permute(1,2,0))

axs[1].set_title(‘original PIL image’)

axs[1].imshow(original)

plt.show()

將輸入數(shù)據(jù)剪切到含 RGB 數(shù)據(jù)的 imshow 的有效范圍內(nèi),以 [0..1] 表示浮點值,或者以 [0..255] 表示整數(shù)值。

使用 torchvision.transforms

進行預(yù)處理

現(xiàn)在,我們已經(jīng)創(chuàng)建了自己的變換函數(shù)或?qū)ο螅ㄔ居米鳛榧铀賹W習曲線的練習),我建議使用 Torch 模塊 torchvision.transforms:

“此模塊定義了一組可組合式類函數(shù)對象,這些對象可作為實參傳遞到數(shù)據(jù)集(如 torchvision.CIFAR10),并在加載數(shù)據(jù)后 __getitem__ 返回數(shù)據(jù)之前,對數(shù)據(jù)執(zhí)行變換”。

以下列出了可能的變換:

■輸入 [23]:

from torchvision import transforms

dir(transforms)

■輸出 [23]:

[‘CenterCrop’,

‘ColorJitter’,

‘Compose’,

‘FiveCrop’,

‘Grayscale’,

‘Lambda’,

LinearTransformation’,

‘Normalize’,

‘Pad’,

‘RandomAffine’,

‘RandomApply’,

‘RandomChoice’,

‘RandomCrop’,

‘RandomErasing’,

‘RandomGrayscale’,

‘RandomHorizontalFlip’,

‘RandomOrder’,

‘RandomPerspective’,

‘RandomResizedCrop’,

‘RandomRotation’,

‘RandomSizedCrop’,

‘RandomVerticalFlip’,

‘Resize’,

‘Scale’,

‘TenCrop’,

‘ToPILImage’,

‘ToTensor’,

‘__builtins__’,

‘__cached__’,

‘__doc__’,

‘__file__’,

‘__loader__’,

‘__name__’,

‘__package__’,

‘__path__’,

‘__spec__’,

‘functional’,

‘transforms’]

在此示例中,我們使用變換來執(zhí)行了以下操作:

1) ToTensor - 從 PIL 圖像轉(zhuǎn)換為張量,并將輸出格式定義為 CxHxW

2) Normalize - 將張量歸一化

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7293

    瀏覽量

    93377
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

    88915
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    812

    瀏覽量

    14420

原文標題:開發(fā)者分享 | 利用 Python 和 PyTorch 處理面向?qū)ο蟮臄?shù)據(jù)集 - 2:創(chuàng)建數(shù)據(jù)集對象

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    使用AICube導(dǎo)入數(shù)據(jù)點創(chuàng)建后提示數(shù)據(jù)不合法怎么處理

    重現(xiàn)步驟 data目錄下 labels.txt只有英文 **錯誤日志** 但是使用示例的數(shù)據(jù)可以完成訓練并部署
    發(fā)表于 06-24 06:07

    數(shù)據(jù)下載失敗的原因?

    數(shù)據(jù)下載失敗什么原因太大了嗎,小的可以下載,想把大的下載去本地訓練報錯網(wǎng)絡(luò)錯誤 大的數(shù)據(jù)多大?數(shù)據(jù)量有多少?
    發(fā)表于 06-18 07:04

    使用Yolo-v3-TF運行OpenVINO?對象檢測Python演示時的結(jié)果不準確的原因?

    的模型與對象檢測 Python* Demo 配合使用時無法檢測對象python3 open_model_zoo/demos/object_detection_demo/
    發(fā)表于 03-06 06:31

    無法在Windows Subsystem for Linux 2上使用對象檢測Python演示運行YoloV4模型?

    在 WSL2 上運行對象檢測 python 演示。 使用 CPU 運行 object_detection_demo.py 時遇到錯誤: OpenCV: FFMPEG: tag
    發(fā)表于 03-05 08:43

    操作指南:pytorch云服務(wù)器怎么設(shè)置?

    設(shè)置PyTorch云服務(wù)器需選擇云平臺,創(chuàng)建合適的GPU實例,安裝操作系統(tǒng)、Python及Anaconda,創(chuàng)建虛擬環(huán)境,根據(jù)CUDA版本安裝PyTorch,配置環(huán)境變量,最后驗證安裝。過程中需考慮
    的頭像 發(fā)表于 02-08 10:33 ?503次閱讀

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)文件資產(chǎn)遷移

    === AbilityConstant.LaunchReason.CONTINUATION) { // ... // 調(diào)用封裝好的分布式數(shù)據(jù)對象處理函數(shù) this.handleDistributedData(want
    發(fā)表于 12-24 10:11

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)

    === AbilityConstant.LaunchReason.CONTINUATION) { // ... // 調(diào)用封裝好的分布式數(shù)據(jù)對象處理函數(shù) this.handleDistributedData(want
    發(fā)表于 12-24 09:40

    利用Arm Kleidi技術(shù)實現(xiàn)PyTorch優(yōu)化

    PyTorch 是一個廣泛應(yīng)用的開源機器學習 (ML) 庫。近年來,Arm 與合作伙伴通力協(xié)作,持續(xù)改進 PyTorch 的推理性能。本文將詳細介紹如何利用 Arm Kleidi 技術(shù)提升 Arm
    的頭像 發(fā)表于 12-23 09:19 ?1452次閱讀
    <b class='flag-5'>利用</b>Arm Kleidi技術(shù)實現(xiàn)<b class='flag-5'>PyTorch</b>優(yōu)化

    PyTorch 2.5.1: Bugs修復(fù)版發(fā)布

    ? 一,前言 在深度學習框架的不斷迭代中,PyTorch 社區(qū)始終致力于提供更穩(wěn)定、更高效的工具。最近,PyTorch 2.5.1 版本正式發(fā)布,這個版本主要針對 2.5.0 中發(fā)現(xiàn)的問題進行了修復(fù)
    的頭像 發(fā)表于 12-03 16:11 ?1846次閱讀
    <b class='flag-5'>PyTorch</b> 2.5.1: Bugs修復(fù)版發(fā)布

    Python編程:處理網(wǎng)絡(luò)請求的代理技術(shù)

    在網(wǎng)絡(luò)編程中,代理技術(shù)扮演著至關(guān)重要的角色,尤其在處理網(wǎng)絡(luò)請求時。通過代理服務(wù)器,我們可以實現(xiàn)請求的轉(zhuǎn)發(fā)、緩存、負載均衡以及安全控制等功能。Python作為一種功能強大的編程語言,為提供了豐富的工具和庫,以便敏捷地實現(xiàn)和處理網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-12 07:23 ?761次閱讀

    使用Python進行圖像處理

    下面是一個關(guān)于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?767次閱讀
    使用<b class='flag-5'>Python</b>進行圖像<b class='flag-5'>處理</b>

    PyTorch GPU 加速訓練模型方法

    在深度學習領(lǐng)域,GPU加速訓練模型已經(jīng)成為提高訓練效率和縮短訓練時間的重要手段。PyTorch作為一個流行的深度學習框架,提供了豐富的工具和方法來利用GPU進行模型訓練。 1. 了解GPU加速
    的頭像 發(fā)表于 11-05 17:43 ?1936次閱讀

    PyTorch 數(shù)據(jù)加載與處理方法

    PyTorch 是一個流行的開源機器學習庫,它提供了強大的工具來構(gòu)建和訓練深度學習模型。在構(gòu)建模型之前,一個重要的步驟是加載和處理數(shù)據(jù)。 1. PyTorch
    的頭像 發(fā)表于 11-05 17:37 ?1217次閱讀

    如何在 PyTorch 中訓練模型

    準備好數(shù)據(jù)。PyTorch 提供了 torch.utils.data.Dataset 和 torch.utils.data.DataLoader 兩個類來幫助我們加載和批量處理
    的頭像 發(fā)表于 11-05 17:36 ?1125次閱讀

    Pytorch深度學習訓練的方法

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