欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > pytorch從csv加載自定義數(shù)據(jù)模板的操作

pytorch從csv加載自定義數(shù)據(jù)模板的操作

熱門(mén)標(biāo)簽:云南地圖標(biāo)注 賓館能在百度地圖標(biāo)注嗎 電銷(xiāo)機(jī)器人 金倫通信 汕頭電商外呼系統(tǒng)供應(yīng)商 crm電銷(xiāo)機(jī)器人 南京crm外呼系統(tǒng)排名 北京外呼電銷(xiāo)機(jī)器人招商 400電話(huà) 申請(qǐng) 條件 鄭州智能外呼系統(tǒng)中心

整理了一套模板,全注釋了,這個(gè)難點(diǎn)終于克服了

from PIL import Image
import pandas as pd
import numpy as np
import torchvision.transforms as transforms
from torch.utils.data import Dataset, DataLoader
import os
#放文件的路徑
dir_path= './97/train/'
csv_path='./97/train.csv'
class Mydataset(Dataset):
 #傳遞數(shù)據(jù)路徑,csv路徑 ,數(shù)據(jù)增強(qiáng)方法
 def __init__(self, dir_path,csv, transform=None, target_transform=None):
  super(Mydataset, self).__init__()
  #一個(gè)個(gè)往列表里面加絕對(duì)路徑
  self.path = []
  #讀取csv
  self.data = pd.read_csv(csv)
  #對(duì)標(biāo)簽進(jìn)行硬編碼,例如0 1 2 3 4,把字母變成這個(gè)
  colorMap = {elem: index + 1 for index, elem in enumerate(set(self.data["label"]))}
  self.data['label'] = self.data['label'].map(colorMap)
  #創(chuàng)造空的label準(zhǔn)備存放標(biāo)簽
  self.num = int(self.data.shape[0]) # 一共多少照片
  self.label = np.zeros(self.num, dtype=np.int32)
  #迭代得到數(shù)據(jù)路徑和標(biāo)簽一一對(duì)應(yīng)
  for index, row in self.data.iterrows():
   self.path.append(os.path.join(dir_path,row['filename']))
   self.label[index] = row['label'] # 將數(shù)據(jù)全部讀取出來(lái)
  #訓(xùn)練數(shù)據(jù)增強(qiáng)
  self.transform = transform
  #驗(yàn)證數(shù)據(jù)增強(qiáng)在這里沒(méi)用
  self.target_transform = target_transform
 #最關(guān)鍵的部分,在這里使用前面的方法
 def __getitem__(self, index):
  img =Image.open(self.path[index]).convert('RGB')
  labels = self.label[index]
  #在這里做數(shù)據(jù)增強(qiáng)
  if self.transform is not None:
   img = self.transform(img) # 轉(zhuǎn)化tensor類(lèi)型
  return img, labels
 def __len__(self):
  return len(self.data)
#數(shù)據(jù)增強(qiáng)的具體內(nèi)容
transform = transforms.Compose(
 [transforms.ToTensor(),
  transforms.Resize(150),
  transforms.CenterCrop(150),
  transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]
)
#加載數(shù)據(jù)
train_data = Mydataset(dir_path=dir_path,csv=csv_path, transform=transform)
trainloader = DataLoader(train_data, batch_size=16, shuffle=True, num_workers=0)
#迭代訓(xùn)練
for i_batch,batch_data in enumerate(trainloader):
 image,label=batch_data

補(bǔ)充:pytorch—定義自己的數(shù)據(jù)集及加載訓(xùn)練

筆記:pytorch Conv2d 的寬高公式理解,pytorch 使用自己的數(shù)據(jù)集并且加載訓(xùn)練

一、pypi 鏡像使用幫助

pypi 鏡像每 5 分鐘同步一次。

臨時(shí)使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

注意,simple 不能少, 是 https 而不是 http

設(shè)為默認(rèn)

修改 ~/.config/pip/pip.conf (Linux), %APPDATA%\pip\pip.ini (Windows 10)$HOME/Library/Application Support/pip/pip.conf (macOS) (沒(méi)有就創(chuàng)建一個(gè)), 修改 index-urltuna,例如

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

pip 和 pip3 并存時(shí),只需修改 ~/.pip/pip.conf。

二、pytorch Conv2d 的寬高公式理解

三、pytorch 使用自己的數(shù)據(jù)集并且加載訓(xùn)練

import os
import sys
import numpy as np
import cv2
import torch
import torch.nn as nn
import torchvision.transforms as transforms
from torch.utils.data import DataLoader, Dataset
import time
import random
import csv
from PIL import Image
def createImgIndex(dataPath, ratio):
 '''
 讀取目錄下面的圖片制作包含圖片信息、圖片label的train.txt和val.txt
 dataPath: 圖片目錄路徑
 ratio: val占比
 return:label列表
 '''
 fileList = os.listdir(dataPath)
 random.shuffle(fileList)
 classList = [] # label列表
 # val 數(shù)據(jù)集制作
 with open('data/val_section1015.csv', 'w') as f:
  writer = csv.writer(f)
  for i in range(int(len(fileList)*ratio)):
   row = []
   if '.jpg' in fileList[i]:
    fileInfo = fileList[i].split('_')
    sectionName = fileInfo[0] + '_' + fileInfo[1] # 切面名+標(biāo)準(zhǔn)與否
    row.append(os.path.join(dataPath, fileList[i])) # 圖片路徑
    if sectionName not in classList:
     classList.append(sectionName)
    row.append(classList.index(sectionName))
    writer.writerow(row)
  f.close()
 # train 數(shù)據(jù)集制作
 with open('data/train_section1015.csv', 'w') as f:
  writer = csv.writer(f)
  for i in range(int(len(fileList) * ratio)+1, len(fileList)):
   row = []
   if '.jpg' in fileList[i]:
    fileInfo = fileList[i].split('_')
    sectionName = fileInfo[0] + '_' + fileInfo[1] # 切面名+標(biāo)準(zhǔn)與否
    row.append(os.path.join(dataPath, fileList[i])) # 圖片路徑
    if sectionName not in classList:
     classList.append(sectionName)
    row.append(classList.index(sectionName))
    writer.writerow(row)
  f.close()
 print(classList, len(classList))
 return classList
def default_loader(path):
 '''定義讀取文件的格式'''
 return Image.open(path).resize((128, 128),Image.ANTIALIAS).convert('RGB')
class MyDataset(Dataset):
 '''Dataset類(lèi)是讀入數(shù)據(jù)集數(shù)據(jù)并且對(duì)讀入的數(shù)據(jù)進(jìn)行索引'''
 def __init__(self, txt, transform=None, target_transform=None, loader=default_loader):
  super(MyDataset, self).__init__() #對(duì)繼承自父類(lèi)的屬性進(jìn)行初始化
  fh = open(txt, 'r') #按照傳入的路徑和txt文本參數(shù),以只讀的方式打開(kāi)這個(gè)文本
  reader = csv.reader(fh)
  imgs = []
  for row in reader:
   imgs.append((row[0], int(row[1]))) # (圖片信息,lable)
  self.imgs = imgs
  self.transform = transform
  self.target_transform = target_transform
  self.loader = loader
 
 def __getitem__(self, index):
  '''用于按照索引讀取每個(gè)元素的具體內(nèi)容'''
  # fn是圖片path #fn和label分別獲得imgs[index]也即是剛才每行中row[0]和row[1]的信息
  fn, label = self.imgs[index]
  img = self.loader(fn)
  if self.transform is not None:
   img = self.transform(img) #數(shù)據(jù)標(biāo)簽轉(zhuǎn)換為T(mén)ensor
  return img, label
 
 def __len__(self):
  '''返回?cái)?shù)據(jù)集的長(zhǎng)度'''
  return len(self.imgs)
class Model(nn.Module):
 def __init__(self, classNum=31):
  super(Model, self).__init__()
  # torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
  # torch.nn.MaxPool2d(kernel_size, stride, padding)
  # input 維度 [3, 128, 128]
  self.cnn = nn.Sequential(
   nn.Conv2d(3, 64, 3, 1, 1), # [64, 128, 128]
   nn.BatchNorm2d(64),
   nn.ReLU(),
   nn.MaxPool2d(2, 2, 0), # [64, 64, 64]
   nn.Conv2d(64, 128, 3, 1, 1), # [128, 64, 64]
   nn.BatchNorm2d(128),
   nn.ReLU(),
   nn.MaxPool2d(2, 2, 0), # [128, 32, 32]
   nn.Conv2d(128, 256, 3, 1, 1), # [256, 32, 32]
   nn.BatchNorm2d(256),
   nn.ReLU(),
   nn.MaxPool2d(2, 2, 0), # [256, 16, 16]
   nn.Conv2d(256, 512, 3, 1, 1), # [512, 16, 16]
   nn.BatchNorm2d(512),
   nn.ReLU(),
   nn.MaxPool2d(2, 2, 0), # [512, 8, 8]
   nn.Conv2d(512, 512, 3, 1, 1), # [512, 8, 8]
   nn.BatchNorm2d(512),
   nn.ReLU(),
   nn.MaxPool2d(2, 2, 0), # [512, 4, 4]
  )
  self.fc = nn.Sequential(
   nn.Linear(512 * 4 * 4, 1024),
   nn.ReLU(),
   nn.Linear(1024, 512),
   nn.ReLU(),
   nn.Linear(512, classNum)
  )
 def forward(self, x):
  out = self.cnn(x)
  out = out.view(out.size()[0], -1)
  return self.fc(out)
def train(train_set, train_loader, val_set, val_loader):
 model = Model()
 loss = nn.CrossEntropyLoss() # 因?yàn)槭欠诸?lèi)任務(wù),所以loss function使用 CrossEntropyLoss
 optimizer = torch.optim.Adam(model.parameters(), lr=0.001) # optimizer 使用 Adam
 num_epoch = 10
 # 開(kāi)始訓(xùn)練
 for epoch in range(num_epoch):
  epoch_start_time = time.time()
  train_acc = 0.0
  train_loss = 0.0
  val_acc = 0.0
  val_loss = 0.0
  model.train() # train model會(huì)開(kāi)放Dropout和BN
  for i, data in enumerate(train_loader):
   optimizer.zero_grad() # 用 optimizer 將 model 參數(shù)的 gradient 歸零
   train_pred = model(data[0]) # 利用 model 的 forward 函數(shù)返回預(yù)測(cè)結(jié)果
   batch_loss = loss(train_pred, data[1]) # 計(jì)算 loss
   batch_loss.backward() # tensor(item, grad_fn=NllLossBackward>)
   optimizer.step() # 以 optimizer 用 gradient 更新參數(shù)
   train_acc += np.sum(np.argmax(train_pred.data.numpy(), axis=1) == data[1].numpy())
   train_loss += batch_loss.item()
  model.eval()
  with torch.no_grad(): # 不跟蹤梯度
   for i, data in enumerate(val_loader):
    # data = [imgData, labelList]
    val_pred = model(data[0])
    batch_loss = loss(val_pred, data[1])
    val_acc += np.sum(np.argmax(val_pred.data.numpy(), axis=1) == data[1].numpy())
    val_loss += batch_loss.item()
   # 打印結(jié)果
   print('[%03d/%03d] %2.2f sec(s) Train Acc: %3.6f Loss: %3.6f | Val Acc: %3.6f loss: %3.6f' % \

     (epoch + 1, num_epoch, time.time() - epoch_start_time, \

     train_acc / train_set.__len__(), train_loss / train_set.__len__(), val_acc / val_set.__len__(),
     val_loss / val_set.__len__()))
if __name__ == '__main__':
 dirPath = '/data/Matt/QC_images/test0916' # 圖片文件目錄
 createImgIndex(dirPath, 0.2)    # 創(chuàng)建train.txt, val.txt
 root = os.getcwd() + '/data/'
 train_data = MyDataset(txt=root+'train_section1015.csv', transform=transforms.ToTensor())
 val_data = MyDataset(txt=root+'val_section1015.csv', transform=transforms.ToTensor())
 train_loader = DataLoader(dataset=train_data, batch_size=6, shuffle=True, num_workers = 4)
 val_loader = DataLoader(dataset=val_data, batch_size=6, shuffle=False, num_workers = 4)
 # 開(kāi)始訓(xùn)練模型
 train(train_data, train_loader, val_data, val_loader)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • pytorch 數(shù)據(jù)加載性能對(duì)比分析
  • pytorch加載語(yǔ)音類(lèi)自定義數(shù)據(jù)集的方法教程
  • pytorch加載自己的圖像數(shù)據(jù)集實(shí)例
  • PyTorch加載自己的數(shù)據(jù)集實(shí)例詳解
  • Pytorch自己加載單通道圖片用作數(shù)據(jù)集訓(xùn)練的實(shí)例
  • Pytorch 數(shù)據(jù)加載與數(shù)據(jù)預(yù)處理方式
  • pytorch 自定義數(shù)據(jù)集加載方法

標(biāo)簽:石家莊 懷化 浙江 西寧 梅州 錫林郭勒盟 昆明 文山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《pytorch從csv加載自定義數(shù)據(jù)模板的操作》,本文關(guān)鍵詞  pytorch,從,csv,加載,自定義,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pytorch從csv加載自定義數(shù)據(jù)模板的操作》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于pytorch從csv加載自定義數(shù)據(jù)模板的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩一区二区三免费高清| 久久精品国产色蜜蜜麻豆| 成人黄页在线观看| 99久久精品久久亚洲精品| 精品国产免费久久| 老司机精品视频线观看86| 中文字幕一区二区三区人妻电影| 欧美裸体bbwbbwbbw| 亚洲国产精品自拍| 国产免费一区二区三区最新6| 欧美日韩精品综合在线| 午夜激情久久久| 少妇被狂c下部羞羞漫画| 欧美日韩精品一区二区天天拍小说| 亚洲精选免费视频| 国产乱国产乱老熟300部视频| 欧美午夜不卡视频| 亚洲成人福利片| 日本精品一二三区| 欧美一区二区三区视频免费播放| 日韩高清欧美激情| 99久久人妻无码精品系列| 久久午夜羞羞影院免费观看| 国产一区在线观看视频| 国产不卡在线观看视频| 国产精品乱人伦一区二区| 不卡一二三区首页| 欧美三级电影精品| 天使萌一区二区三区免费观看| 中文字幕一区二区久久人妻网站| 精品国产乱码久久| 国产成人午夜精品5599| 在线一区二区视频| 视频一区二区三区中文字幕| 亚洲成人网在线播放| 国产人成亚洲第一网站在线播放 | 麻豆91精品视频| 粉嫩精品久久99综合一区| 中文av一区特黄| 91精品人妻一区二区三区蜜桃2| 欧美一级日韩免费不卡| 久久99国内精品| 老湿机69福利| 亚洲成人综合在线| av网站免费在线看| 成人免费在线播放视频| 涩视频在线观看| 久久精品人人做| 成人动漫av在线| 911精品国产一区二区在线| 精品一区二区三区视频在线观看| 来吧亚洲综合网| 亚洲小说春色综合另类电影| 精品无码一区二区三区| 中文字幕一区二区三区在线观看| 午夜免费福利影院| 国产日韩欧美精品在线| 在线观看网站黄| 精品人伦一区二区色婷婷| 成人午夜视频福利| 91精品国产色综合久久不卡蜜臀| 国产一区二区伦理| 欧美久久婷婷综合色| 国产麻豆一精品一av一免费| 欧美色中文字幕| 国产一级精品在线| 欧美日韩国产综合久久| 国产精品一卡二卡在线观看| 欧美日韩国产a| 国产精品羞羞答答xxdd| 欧美日韩高清不卡| 成人网男人的天堂| 精品免费国产二区三区| 91亚洲国产成人精品一区二三| 精品国产伦一区二区三区观看方式| 白白色 亚洲乱淫| 欧美成人a∨高清免费观看| 91在线国内视频| 久久美女艺术照精彩视频福利播放| 91麻豆国产福利在线观看| 久久久亚洲精华液精华液精华液| 少妇高潮一69aⅹ| 国产精品水嫩水嫩| 国产精品成人一区二区三区电影毛片| 亚洲免费高清视频在线| 日本爱爱爱视频| 五月激情综合色| 色婷婷亚洲婷婷| 国产剧情一区在线| 欧美一级淫片007| 91一区二区三区在线观看| 国产午夜精品一区二区三区视频 | 久久99九九99精品| 欧美日韩不卡一区二区| 成人激情文学综合网| 26uuuu精品一区二区| 在线观看成人动漫| 一区二区成人在线| 老湿机69福利| 国产成人免费在线观看| 精品国产乱子伦一区| 一区二区免费在线观看视频| 亚洲精选视频在线| 色婷婷狠狠综合| 成人永久aaa| 国产片一区二区| 国产一区二区三区四区五区六区| 天堂va蜜桃一区二区三区漫画版| 欧美日韩国产小视频在线观看| 波多野结衣中文一区| 中文字幕精品一区| 精品一区二区三区蜜桃在线| 美女视频一区二区三区| 日韩一级视频免费观看在线| 亚洲精品久久一区二区三区777| 亚洲欧美激情插| 一本色道亚洲精品aⅴ| 成人午夜视频福利| 中文字幕中文字幕在线一区| 国产日产精品一区二区三区的介绍| 久久99精品国产.久久久久久| 日韩美女一区二区三区四区| 老司机免费视频| 亚洲成精国产精品女| 欧美日韩国产美| 四虎永久免费观看| 午夜精品123| 日韩情涩欧美日韩视频| 亚洲黄色免费在线观看| 日韩国产精品久久久久久亚洲| 欧美一区二区人人喊爽| 日本一卡二卡在线| 日av在线不卡| 精品电影一区二区| 91狠狠综合久久久久久| 国产福利精品一区二区| 国产精品免费免费| 色猫猫国产区一区二在线视频| 99久久综合99久久综合网站| 亚洲免费观看在线观看| 欧美亚洲另类激情小说| 国内自拍偷拍视频| 石原莉奈在线亚洲二区| 欧美成人精品福利| 大胸美女被爆操| 丰满亚洲少妇av| 亚洲精选在线视频| 欧美电影一区二区三区| 3d动漫精品啪啪一区二区下载| 久久99国产精品久久99| 国产视频一区二区在线| 中文字幕人妻一区二| 两女双腿交缠激烈磨豆腐| 午夜伊人狠狠久久| 久久婷婷国产综合精品青草| 男人av资源站| 男男受被啪到高潮自述| 婷婷开心久久网| 久久久久久久久久久久电影| 日本黄色片免费观看| 91女人视频在线观看| 日韩中文欧美在线| 久久久久久综合| 国产成人无码aa精品一区| 韩国三级视频在线观看| 激情欧美日韩一区二区| 国产精品第一页第二页第三页| 欧美天天综合网| 性欧美精品男男| 99久久久免费精品国产一区二区 | 中文文字幕文字幕高清| 精彩视频一区二区| 亚洲图片另类小说| 日韩一区二区三区视频在线| 91麻豆精品久久毛片一级| 丰满少妇中文字幕| 久久国产尿小便嘘嘘尿| 自拍偷拍亚洲综合| 欧美一级精品在线| 中文字幕五月天| 成人午夜精品无码区| 国产激情一区二区三区| 亚洲狠狠爱一区二区三区| 久久精品人人做| 欧美人牲a欧美精品| 欧美88888| 国产精品入口麻豆| 大尺度一区二区| 日本午夜一区二区| 亚洲色图一区二区| 精品国产乱码久久久久久闺蜜| 在线观看中文字幕不卡| 亚洲色成人网站www永久四虎 | 久久久久久久久久久电影| 在线看国产一区| 1024手机在线观看你懂的| 国产成人精品综合久久久久99| 国内精品免费**视频| 亚洲高清免费一级二级三级| 国产精品网站在线观看|