我在 pytorch 中创建了我的模型并且工作得非常好,但是当我只想测试一个图像时,batch_size=1总是返回第二类(在本例中是一只狗)。
我尝试使用批次 > 1 进行测试,在所有情况下这都有效!
架构:
model = models.densenet121(pretrained=True)
for param in model.parameters():
param.requires_grad = False
from collections import OrderedDict
classifier = nn.Sequential(OrderedDict([
('fc1', nn.Linear(1024, 500)),
('relu', nn.ReLU()),
('fc2', nn.Linear(500, 2)),
('output', nn.LogSoftmax(dim=1))
]))
model.classifier = classifier
Run Code Online (Sandbox Code Playgroud)
所以我的张量是 [batch, 3, 224, 224]
我尝试过:
resize
reshape
unsqueeze(0)
Run Code Online (Sandbox Code Playgroud)
当是一张图像时的响应始终是 [[0.4741, 0.5259]]
我的测试代码
from PIL import *
msize = 256
loader = transforms.Compose([transforms.Scale(imsize), transforms.ToTensor()])
def image_loader(image_name):
"""load image, returns cuda tensor"""
image = Image.open(image_name)
image = loader(image).float()
image = …Run Code Online (Sandbox Code Playgroud)