首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError :当我在定义data_transformation对象的内部调用data_transformation函数时

TypeError :当我在定义data_transformation对象的内部调用data_transformation函数时
EN

Stack Overflow用户
提问于 2022-09-12 16:45:50
回答 1查看 42关注 0票数 0

当我试图用我的get_data函数创建一个对象时:

代码语言:javascript
复制
   train = get_data(root ="My_train_path",
                     transform = data_transforms[TRAIN] )

它返回一个TypeError: 'function' object is not subscriptable

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 19:01:46

问题就像错误消息说的那样:data_transforms是您定义的函数,您希望用训练阶段作为参数来调用它。但是,使用方括号([])错误地订阅了函数。要解决这个问题,请将方括号替换为括号(()),就像函数调用一样。

那是,

代码语言:javascript
复制
train = get_data(root ="My_train_path",
                 transform = data_transforms(TRAIN) )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73692593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档