国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法

2020-02-15 21:37:47
字體:
供稿:網(wǎng)友

環(huán)境

系統(tǒng):win10

cpu:i7-6700HQ

gpu:gtx965m

python : 3.6

pytorch :0.3

數(shù)據(jù)下載

來源自Sasank Chilamkurthy 的教程; 數(shù)據(jù):下載鏈接。

下載后解壓放到項目根目錄:

 

數(shù)據(jù)集為用來分類 螞蟻和蜜蜂。有大約120個訓(xùn)練圖像,每個類有75個驗證圖像。

數(shù)據(jù)導(dǎo)入

可以使用 torchvision.datasets.ImageFolder(root,transforms) 模塊 可以將 圖片轉(zhuǎn)換為 tensor。

先定義transform:

ata_transforms = {  'train': transforms.Compose([    # 隨機切成224x224 大小圖片 統(tǒng)一圖片格式    transforms.RandomResizedCrop(224),    # 圖像翻轉(zhuǎn)    transforms.RandomHorizontalFlip(),    # totensor 歸一化(0,255) >> (0,1)  normalize  channel=(channel-mean)/std    transforms.ToTensor(),    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  ]),  "val" : transforms.Compose([    # 圖片大小縮放 統(tǒng)一圖片格式    transforms.Resize(256),    # 以中心裁剪    transforms.CenterCrop(224),    transforms.ToTensor(),    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  ])}

導(dǎo)入,加載數(shù)據(jù):

data_dir = './hymenoptera_data'# trans dataimage_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x]) for x in ['train', 'val']}# load datadata_loaders = {x: DataLoader(image_datasets[x], batch_size=BATCH_SIZE, shuffle=True) for x in ['train', 'val']}data_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}class_names = image_datasets['train'].classesprint(data_sizes, class_names)

{'train': 244, 'val': 153} ['ants', 'bees']

訓(xùn)練集 244圖片 , 測試集153圖片 。

可視化部分圖片看看,由于visdom支持tensor輸入 ,不用換成numpy,直接用tensor計算即可 :

inputs, classes = next(iter(data_loaders['val']))out = torchvision.utils.make_grid(inputs)inp = torch.transpose(out, 0, 2)mean = torch.FloatTensor([0.485, 0.456, 0.406])std = torch.FloatTensor([0.229, 0.224, 0.225])inp = std * inp + meaninp = torch.transpose(inp, 0, 2)viz.images(inp)

創(chuàng)建CNN

net 根據(jù)上一篇的處理cifar10的改了一下規(guī)格:

class CNN(nn.Module):  def __init__(self, in_dim, n_class):    super(CNN, self).__init__()    self.cnn = nn.Sequential(      nn.BatchNorm2d(in_dim),      nn.ReLU(True),      nn.Conv2d(in_dim, 16, 7), # 224 >> 218      nn.BatchNorm2d(16),      nn.ReLU(inplace=True),      nn.MaxPool2d(2, 2), # 218 >> 109      nn.ReLU(True),      nn.Conv2d(16, 32, 5), # 105      nn.BatchNorm2d(32),      nn.ReLU(True),      nn.Conv2d(32, 64, 5), # 101      nn.BatchNorm2d(64),      nn.ReLU(True),      nn.Conv2d(64, 64, 3, 1, 1),      nn.BatchNorm2d(64),      nn.ReLU(True),      nn.MaxPool2d(2, 2), # 101 >> 50      nn.Conv2d(64, 128, 3, 1, 1), #      nn.BatchNorm2d(128),      nn.ReLU(True),      nn.MaxPool2d(3), # 50 >> 16    )    self.fc = nn.Sequential(      nn.Linear(128*16*16, 120),      nn.BatchNorm1d(120),      nn.ReLU(True),      nn.Linear(120, n_class))  def forward(self, x):    out = self.cnn(x)    out = self.fc(out.view(-1, 128*16*16))    return out# 輸入3層rgb ,輸出 分類 2    model = CNN(3, 2)            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐亭县| 乌兰察布市| 嘉善县| 炎陵县| 澜沧| 礼泉县| 泾源县| 綦江县| 正蓝旗| 怀来县| 金沙县| 玉山县| 沁源县| 石狮市| 青龙| 洮南市| 广丰县| 马尔康县| 弋阳县| 湖北省| 财经| 青冈县| 东宁县| 兰坪| 花莲市| 双江| 外汇| 舞阳县| 乐都县| 太康县| 图片| 嫩江县| 湘乡市| 舟曲县| 浦城县| 延长县| 惠水县| 津市市| 闵行区| 科技| 县级市|