我使用的是'tf.keras.layers.experimental.preprocessing.Normalization'。这一层很酷,因为您可以在这一层中保存权重,以规范化任何输入到这一层的数据。然而,我在Pytorch中找不到任何规范化层。是否有一个层起着同样的作用?
PyTorch没有内置实现此功能。但是,您可以自己测量平均值和标准偏差(仅保留相关轴),然后使用torchvision.transform.Normalize
与这些统计数据。
例如为了测量通道上的mean
和std
:
>>> x = torch.rand(16, 3, 10, 10)
>>> mean, std = x.mean((0, 2, 3)), x.std((0, 2, 3))
(tensor(0.4941), tensor(0.2899))
然后初始化一个transform:
>>> t = torchvision.transform.Normalize(mean, std)
你可以在一个新的数据集上使用这个函数,根据初始数据集的统计数据对它进行规范化:
>>> z_normalized = t(z)
也许你花了大约1秒来寻找它:-)在pytorch中,它是通过转换完成的。
例如:
from torchvision import transforms
transforms.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
)
网上有成千上万的例子。