python - 预训练模型所需的标准化 (PyTorch)

标签 python pytorch normalization transfer-learning

我正在使用 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/

相关文章:

sql - 如何获取刚刚插入的文件的主键 ID?

python - 如何手动更新Python包(Pandas)?

python - 在 jupyter 笔记本中使用 pyspark 时如何指定驱动程序类路径?

python - 如何在 Plotly 中作为查看器启用和禁用对数刻度?

python - 如何在多个 GPU 的 Pytorch 示例中利用 DistributedDataParallel 的世界大小参数?

python - 在功能上,torch.multinomial 与 torch.distributions.categorical.Categorical 相同吗?

python - Jython 和 Python 的区别

python - 我想将下面的代码(神经网络)从 keras 转换为 pytorch

MYSQL 和规范化 : How to handle lots of optional fields?

javascript - 管理用于 HTML Canvas 的对数数组数据