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 数组。
我在 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 数组。