Ich versuche, einen Vorwärtsdurchlauf zu berechnen, indem ich ein vortrainiertes ResNet-Modell in pytorch verwende. Ich habe Probleme bei der Erstellung eines 4-D-Tensors für Mini-Batches. Kann jemand bitte sagen, was der richtige Weg ist, das zu tun?wie effizient ein Mini-Batch von Bildern in Pytorch?
EDIT: Ich habe den Code geändert und es funktioniert jetzt. Dennoch denke ich, dass es einen effizienteren Weg geben sollte, dies zu tun.
Hier ist mein Code:
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
Sie können einen 4D Tensor wie folgt erzeugen: torch.Tensor (1,1,1,1). Oder um einem Tensor (oder einer Variablen) eine Dimension hinzuzufügen, können Sie t.unsqueeze (0) tun. Aber nicht sicher, wie dir das weiterhilft. Sie müssen uns den Fehler geben, oder mehr Hinweise, wo Sie stecken bleiben. – blckbird
Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune
Haben Sie versucht, DataLoader (Sie finden es in fackel.utils.data) in pytorch ?? Es macht Minibatches für Sie mit Multiprocessing – Kashyap