首页 Paddle框架 帖子详情
调试了几天还是不行,求解
收藏
快速回复
Paddle框架 问答深度学习 1313 4
调试了几天还是不行,求解
收藏
快速回复
Paddle框架 问答深度学习 1313 4

#这是我定义的类,用于数据处理

class Images(paddle.io.Dataset):

    def __init__(self, ds_dir_name, normalize=100, classify=False):
        
        self.df = pd.read_csv(ds_dir_name, header=None, encoding="ISO-8859-1")
        #计算体重平均值
        self.mean = pd.read_csv(ds_dir_name, header=None, encoding="ISO-8859-1").iloc[:, 5].mean()
        #计算均方差
        self.std = pd.read_csv(ds_dir_name, header=None, encoding="ISO-8859-1").iloc[:, 5].std()

        self.to_tensor1 = transforms.ToTensor()
        self.to_tensor = transforms.Compose([transforms.Resize((128, 128)), transforms.ToTensor()])
        self.norm = normalize
        self.classify = classify

    def __len__(self):
        return len(self.df)

    def __getitem__(self, index):
        image_name = '/home/aistudio/work/data/REDDIT_WEIGHT_DATASET//' + self.df.iloc[index,6]
        mask_name = '/home/aistudio/work/data/Mask//' + self.df.iloc[idx,6]
        joint_name = '/home/aistudio/work/data/Reddit-Joints//' + self.df.iloc[index,6].replace('jpg', 'npy')
        img_name = self.df.iloc[index,6].split('.')[0]

        if self.classify:

            weight = int(np.round(self.df.iloc[idx, 5]))

            if weight < 41:
                weight = 0
            elif weight >= 167:
                weight = 15
            else:
                weight = int((weight - 41) / 9) + 1

        else:
            weight = InputSpec.from_numpy(np.array([float(self.df.iloc[idx, 5]) / self.norm])).dtype('float32')
            

        #image_name = InputSpec.from_numpy(image_name)
        # Reading Image
        X = Image.open(image_name).convert('RGB')
        #X = cv2.cvtColor(cv2.imread(image_name), cv2.COLOR_BGR2RGB).astype('float32')
        #X = self.to_tensor(X)
        X = np.array(X)
        

        # Reading Mask

        y_mask = (cv2.imread(mask_name, 0) > 100).astype('float32')
        y_mask = Categorical(y_mask, 2)
        #y_mask = self.to_tensor1(y_mask)
        y_mask = np.array(y_mask)

        # Reading Joint
        y_heatmap = np.load(joint_name).astype('int64')  # np.zeros((128,128))  # For Heatmaps
        #y_heatmap = np.array(y_heatmap)


        return image_name, X, y_mask, y_heatmap, weight

#这是我的测试语句

dataset = Images('/home/aistudio/data/Train.csv',normalize = 100,classify = True)

train_data = paddle.io.DataLoader(dataset, batch_size=5, shuffle=True, num_workers=0, drop_last=True)

image_name,X,y_mask,y_heatmap,weight = next(train_data())

#报错信息

2021-04-28 09:08:21,858 - ERROR - DataLoader reader thread raised an exception!
Traceback (most recent call last):
File "test.py", line 11, in
image_name,X,y_mask,y_heatmap,weight = next(train_data())
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 779, in __next__
data = self._reader.read_next_var_list()
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
[Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:158)

0
收藏
回复
全部评论(4)
时间顺序
AIStudio810258
#2 回复于2021-04

num_workers 改小些试试

0
回复
AIStudio810258
#3 回复于2021-04

原来已经是0了,那就把__getitem__()里的语句一行行注释调试吧

0
回复
AIStudio810258
#4 回复于2021-04

这个函数里的错误只报 raises an exception,得自己定位

0
回复
齐12345673
#5 回复于2021-09

解决了吗

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户