Numpy 在PyTorch变换中使用略读特征提取器
我想申请我的数据,并想知道是否有任何可能性在我的火炬的转换,这是现在的以下内容:Numpy 在PyTorch变换中使用略读特征提取器,numpy,pytorch,scikit-image,torchvision,Numpy,Pytorch,Scikit Image,Torchvision,我想申请我的数据,并想知道是否有任何可能性在我的火炬的转换,这是现在的以下内容: data_transforms = { 'train': transforms.Compose([ transforms.CenterCrop(178), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize([0.5, 0.5, 0.5],
data_transforms = {
'train': transforms.Compose([
transforms.CenterCrop(178),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
]),
'val': transforms.Compose([
transforms.CenterCrop(178),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
]),
}
如果没有,我将如何实施?导入数据时我必须这样做吗?您可以使用。它允许您将自定义lambda函数作为变换应用
类似于
transforms.Lambda(Lambda x:local\u binary\u pattern(x))
您可以使用lamdba函数实现转换。正如@dhananjay正确指出的那样。
根据该意见,执行情况如下:
def lbp(x):
radius = 2
n_points = 8 * radius
METHOD = 'uniform'
lbp = local_binary_pattern(x, n_points, radius, METHOD)
return lbp
data_transforms = {
'train': transforms.Compose([
transforms.CenterCrop(178),
transforms.RandomHorizontalFlip(),
transforms.Lambda(lbp),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
]),
'val': transforms.Compose([
transforms.CenterCrop(178),
transforms.Lambda(lbp),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
]),
}
但是。这是一个坏主意,因为它违背了pytorch变换的目的。
变换非常适合于以下操作:
1.可以从原始数据进行简单的计算(计算成本较低)。因此,这没有好处
将其应用于数据并存储副本。规格化就是这样一种变换。
2.在原始数据中引入随机性或随机扰动元素。例如随机水平翻转等
要记住的关键一点是,您的转换将在每次批处理时应用于数据集
学习
考虑到上述情况,您绝对不希望将lbp实现为转换。更好
离线计算并存储。否则,您将显著降低批量加载的速度