我正在使用 pytorch 中的预训练模型:
model = models.resnet50(pretrained=True).to(device)
for param in model.parameters():
param.requires_grad = False
model.fc = Identity()
我应该使用数据均值和标准差对数据进行标准化,还是使用模型创建者使用的值?
class customDataset(torch.utils.data.Dataset):
'Characterizes a dataset for PyTorch'
def __init__(self, X, y):
'Initialization'
self.normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
self.X = X
self.y = torch.tensor(y, dtype=torch.float32)
def __len__(self):
return len(self.X)
def __getitem__(self, idx):
X = self.X[idx]
X = ToTensor()(X).type(torch.float32)[:3,:]
X = self.normalize(X)
return X, self.y[idx]
最佳答案
您必须使用训练期间使用的归一化均值和标准差。在训练数据归一化的基础上,对模型进行了优化。为了使模型按预期工作,必须使用相同的数据分布。
如果您从头开始训练模型,则可以使用数据集特定的标准化参数。
关于python - 预训练模型所需的标准化 (PyTorch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72184771/