Как эффективно сделать мини-пакет изображений в Pytorch?

Я пытаюсь рассчитать прямой проход, используя предварительно обученную модель ResNet в pytorch. У меня проблемы с созданием 4-го Тензорного мини-партии. Может кто-нибудь сказать, пожалуйста, как это правильно сделать?

РЕДАКТИРОВАТЬ: я изменил код, и теперь он работает. Тем не менее, я все еще думаю, что должен быть более эффективный способ сделать это.

Вот мой код:

import pickle
import json
import shutil
import Image
import torchvision.models as models
import torchvision.transformers as transformers
from torch.autograd import Variable
from torch import Tensor
import glob
import torch

batch_size = 128
im_size = 299

normalize = transforms.Normalize(
   mean=[0.485, 0.456, 0.406],
   std=[0.229, 0.224, 0.225]
)
preprocess = transforms.Compose([
   transforms.Scale(im_size),
   transforms.CenterCrop(im_size),
   transforms.ToTensor(),
   normalize
])


model = models.resnet50(pretrained=True)

d_batch = make_batch(imgs, batch_size)

dtype = torch.FloatTensor
tmp = Variable(torch.randn(batch_size, 3, im_size, im_size).type(dtype), requires_grad=False)


for batch in tqdm(batches):
        try:
                data = [Image.open(img) for img in batch]
                for idx, item in enumerate(data):
                        tmp[idx] = preprocess(item)
                batch_result = model(tmp)
        except Exception,x:
                print x

1 ответ

С помощью dataset = torchvision.datasets.ImageFolder(...) Вы можете загрузить набор данных из папки изображений. После этого вы можете использовать torch.utils.data.DataLoader(dataset, batch_size=batchSize) указать размер мини-партии и другие вещи для дальнейшей обработки.

Другие вопросы по тегам