当我试图用我的get_data函数创建一个对象时:
train = get_data(root ="My_train_path",
transform = data_transforms[TRAIN] )它返回一个TypeError: 'function' object is not subscriptable。
data_dir = 'my_dataset_dir'
TEST = 'test'
TRAIN = 'train'
VAL = 'val'
def data_transforms(phase):
if phase == TRAIN:
transform = A.Compose([
A.CLAHE(clip_limit=4.0, p=0.7),
A.CoarseDropout(max_height=8, max_width=8, max_holes=8, p=0.5),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
ToTensorV2(),
])
if phase == VAL:
transform = A.Compose([
A.Resize(height=256,width=256),
A.CenterCrop(height=224,width=224),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
ToTensorV2(),
])
if phase == TEST:
transform = A.Compose([
A.Resize(height=256,width=256),
A.CenterCrop(height=224,width=224),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
ToTensorV2(),
])
return transform
def get_data(root,transform):
image_dataset = CustomImageFolder(root=".",
transform = transform,
)
return image_dataset
def make_loader(dataset, batch_size,shuffle,num_workers):
loader = torch.utils.data.DataLoader(dataset=dataset,
batch_size=batch_size,
shuffle=shuffle,
pin_memory=True, num_workers=num_workers)
return loader发布于 2022-09-12 19:01:46
问题就像错误消息说的那样:data_transforms是您定义的函数,您希望用训练阶段作为参数来调用它。但是,使用方括号([])错误地订阅了函数。要解决这个问题,请将方括号替换为括号(()),就像函数调用一样。
那是,
train = get_data(root ="My_train_path",
transform = data_transforms(TRAIN) )https://stackoverflow.com/questions/73692593
复制相似问题