修正torchvision变换的随机种子

2024-05-29 10:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了一些类似于以下的代码—用于数据扩充:

    from torchvision import transforms

    #...

    augmentation = transforms.Compose([
        transforms.RandomApply([
            transforms.RandomRotation([-30, 30])
        ], p=0.5),
        transforms.RandomHorizontalFlip(p=0.5),
    ])

在测试过程中,每次更改模型训练设置时,我都希望修复随机值以再现相同的随机参数。我该怎么做?你知道吗

我想做一些类似于np.random.seed(0)的事情,所以每次我第一次用概率调用随机函数时,它都会以相同的旋转角度和概率运行。换句话说,如果我根本不更改代码,那么当我重新运行它时,它必须复制相同的结果。你知道吗

或者,我可以分离变换,使用p=1,将角度minmax固定到一个特定的值,并使用numpy随机数来生成结果,但我的问题是,我是否可以保持上面的代码不变。你知道吗


Tags: 数据compose代码from模型import过程概率
1条回答
网友
1楼 · 发布于 2024-05-29 10:17:02

在dataset类的__getitem__中创建一个numpy随机种子。你知道吗

def __getitem__(self, index):      
    img = io.imread(self.labels.iloc[index,0])
    target = self.labels.iloc[index,1]

    seed = np.random.randint(2147483647) # make a seed with numpy generator 
    random.seed(seed) # apply this seed to img transforms
    if self.transform is not None:
        img = self.transform(img)

    random.seed(seed) # apply this seed to target transforms
    if self.target_transform is not None:
        target = self.target_transform(target)

    return img, target

相关问题 更多 >

    热门问题