if self.transforms 是什么意思?
What does does if self.transforms mean?
什么
if self.transforms:
data = self.transforms(data)
做什么?我不明白这条线背后的逻辑 - 这条线使用的条件是什么?
我正在阅读一篇关于基于以下实现使用 pytorch 创建自定义数据集的文章:
#custom dataset
class MNISTDataset(Dataset):
def __init__(self, images, labels=None, transforms=None):
self.X = images
self.y = labels
self.transforms = transforms
def __len__(self):
return (len(self.X))
def __getitem__(self, i):
data = self.X.iloc[i, :]
data = np.asarray(data).astype(np.uint8).reshape(28, 28, 1)
if self.transforms:
data = self.transforms(data)
if self.y is not None:
return (data, self.y[i])
else:
return data
train_data = MNISTDataset(train_images, train_labels, transform)
test_data = MNISTDataset(test_images, test_labels, transform)
# dataloaders
trainloader = DataLoader(train_data, batch_size=128, shuffle=True)
testloader = DataLoader(test_data, batch_size=128, shuffle=True)
谢谢!我基本上是想了解它为什么起作用以及它如何将转换应用于数据。
数据集 MNISTDataset
可以选择使用转换函数进行初始化。如果给出这样的转换函数,它将保存在 self.transforms
中,否则它将保留其默认值 None
。当使用 __getitem__
调用新项目时,它首先检查转换是否为真值,在这种情况下,它检查是否可以将 self.transforms
强制转换为 True
可调用对象就是这种情况目的。否则这意味着 self.transforms
没有首先提供并且没有在 data
.
上应用转换函数
这是一个通用示例,来自 torch/torchvision 上下文:
def do(x, callback=None):
if callback: # will be True if callback is a function/lambda
return callback(x)
return x
do(2) # returns 2
do(2, callback=lambda x: 2*x) # returns 4
什么
if self.transforms:
data = self.transforms(data)
做什么?我不明白这条线背后的逻辑 - 这条线使用的条件是什么?
我正在阅读一篇关于基于以下实现使用 pytorch 创建自定义数据集的文章:
#custom dataset
class MNISTDataset(Dataset):
def __init__(self, images, labels=None, transforms=None):
self.X = images
self.y = labels
self.transforms = transforms
def __len__(self):
return (len(self.X))
def __getitem__(self, i):
data = self.X.iloc[i, :]
data = np.asarray(data).astype(np.uint8).reshape(28, 28, 1)
if self.transforms:
data = self.transforms(data)
if self.y is not None:
return (data, self.y[i])
else:
return data
train_data = MNISTDataset(train_images, train_labels, transform)
test_data = MNISTDataset(test_images, test_labels, transform)
# dataloaders
trainloader = DataLoader(train_data, batch_size=128, shuffle=True)
testloader = DataLoader(test_data, batch_size=128, shuffle=True)
谢谢!我基本上是想了解它为什么起作用以及它如何将转换应用于数据。
数据集 MNISTDataset
可以选择使用转换函数进行初始化。如果给出这样的转换函数,它将保存在 self.transforms
中,否则它将保留其默认值 None
。当使用 __getitem__
调用新项目时,它首先检查转换是否为真值,在这种情况下,它检查是否可以将 self.transforms
强制转换为 True
可调用对象就是这种情况目的。否则这意味着 self.transforms
没有首先提供并且没有在 data
.
这是一个通用示例,来自 torch/torchvision 上下文:
def do(x, callback=None):
if callback: # will be True if callback is a function/lambda
return callback(x)
return x
do(2) # returns 2
do(2, callback=lambda x: 2*x) # returns 4