小编pri*_*392的帖子

在pytorch中加载多个.npy文件(大小> 10GB)

我正在寻找一个优化的解决方案来使用 pytorch 数据加载器加载多个巨大的 .npy 文件。我目前正在使用以下方法,为每个时期的每个文件创建一个新的数据加载器。

我的数据加载器是这样的:

class GetData(torch.utils.data.Dataset):

    def __init__(self, data_path, target_path, transform=None):
        with open(data_path, 'rb') as train_pkl_file:
            data = pickle.load(train_pkl_file)
            self.data = torch.from_numpy(data).float()
        with open(target_path, 'rb') as target_pkl_file:
            targets = pickle.load(target_pkl_file)
            self.targets = torch.from_numpy(targets).float()

    def __getitem__(self, index):
        x = self.data[index]
        y = self.targets[index]
        return index, x, y

    def __len__(self):
        num_images = self.data.shape[0]
        return num_images
Run Code Online (Sandbox Code Playgroud)

我有一个 npy 文件列表:

list1 = ['d1.npy', 'd2.npy','d3.npy']
list1 = ['s1.npy', 's2.npy','s3.npy']
Run Code Online (Sandbox Code Playgroud)

我创建了一个数据加载器,它给出了文件名

class MyDataset(torch.utils.data.Dataset):
    def __init__(self,flist):
        self.npy_list1 = flist1
        self.npy_list2 = flist2

    def __getitem__(self, idx): …
Run Code Online (Sandbox Code Playgroud)

numpy machine-learning pytorch dataloader

4
推荐指数
1
解决办法
3728
查看次数

Misra-C 2012 规则 10.1 布尔操作数在表达式为布尔类型的情况下使用

以下几行生成 misra 违规。

unsigned int u16_a;
unsigned char u8_b;  
if (u16_a && u8_b) // Generates Misra-C 10.1 violation. 
(u16_a) ? 2 : 1 //Generates Misra-C 10.1 violation.
Run Code Online (Sandbox Code Playgroud)

违规表示操作数是必要的有符号类型,但应该是布尔类型。

对于第一次违规,如果我将它们强制转换为 _Bool 类型,它会不会导致溢出,因为我记得 bool 数据类型的大小是 1 个字节。

对于第二次违规,请尝试以下操作:

(u16_a == 0)? 1 :2 // does this work
Run Code Online (Sandbox Code Playgroud)

我在处理 MISRA 违规方面还很陌生,并且对大多数违规行为感到困惑。提前致谢。

c misra

1
推荐指数
1
解决办法
8386
查看次数

标签 统计

c ×1

dataloader ×1

machine-learning ×1

misra ×1

numpy ×1

pytorch ×1