0
我想在pytorch中使用預先訓練好的ResNet模型來計算正向通行證。我無法創建小批量的4維張量。有人可以告訴什麼是適當的方式來做到這一點?如何在pytorch中有效地製作一個小批量的圖像?
編輯:我改變了代碼,它現在的作品。不過,我仍然認爲應該採取更有效的方式來做到這一點。
這裏是我的代碼:
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
您可以像這樣創建一個4d張量:torch.Tensor(1,1,1,1)。或者添加一個維度到任何張量(或變量),你可以做t.unsqueeze(0)。但不知道這將如何幫助你。你需要給我們提供錯誤,或者更多提示你被困住的地方。 – blckbird
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune
你有沒有在pytorch中試過DataLoader(你可以在torch.utils.data中找到它)?它使用多處理功能爲您製作小型貼片 – Kashyap