onnx 模型中的 PyTorch 规范化

PyTorch normalization in onnx model

我在 pytorch 中做图像分类,我使用了这个转换

transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])

并完成了培训。之后,我将 .pth 模型文件转换为 .onnx 文件

现在,在推论中,我应该如何在 numpy 数组中应用此转换,因为 onnx 处理 numpy 数组中的输入

您可以将相同的 transforms 应用于 np.array,因为 example

你有几个选择。

由于自己编写 normalize 非常简单,您可以这样做

import numpy as np
mean = np.array([0.485, 0.456, 0.406]).reshape(-1,1,1)
std = np.array([0.229, 0.224, 0.225]).reshape(-1,1,1)
x_normalized = (x - mean) / std

根本不需要 pytorch 或 torchvision 库。

如果您仍在使用您的 pytorch 数据集,您可以使用以下转换

transforms.Compose([
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
    torch.Tensor.numpy  # or equivalently transforms.Lambda(lambda x: x.numpy())
])

这只会将归一化应用于张量,然后将其转换为 numpy 数组。