Python 训练数据 多组数据组合打乱

网络训练的时候,有两种导入数据的形式,第一种是:读入数据的list,然后每次训练的时候读入数据;第二种:一次性读入数据,在训练的时候取batchsize大小的数据进行训练。
前种方式适合大数据量,内存不够用时,但是需要在硬盘上反复读写数据,比较耗时;
后种方式适合小量量数据,内存足够, 不需要反复的读写硬盘,节省时间。

打乱list数据

当采用第一种方式读取数据时,每个epoch需要对数据的list进行打乱,list里面存储的是文件名,对文件名进行打乱,读取数据也就打乱了。训练的时候,一般至少存在标签和输入两组数据,打乱时应该成对的打乱,下面给出存在三组数据组合打乱代码

def shuffle_list(list1, list2, list3):
    c = list(zip(list1, list2, list3))
    random.shuffle(c)
    list1[:], list2[:], list3[:] = zip(*c)
    return list1, list2, list3

打乱array数据

当采用第二种方式读取数据时,每个epoch需要对读取的全部数据进行打乱。同样,训练的时候,一般至少存在标签和输入两组数据,打乱时应该成对的打乱,下面给出存在三组数据组合打乱代码。其中,数据的格式为array,包含四个维度,分别为[数据量,图像长,图像宽,channel].

def shuffle_v3(arr1, arr2, arr2):
    per = np.random.permutation(arr1.shape[0])
    shuffle_arr1 = arr1[per, :, :, :]
    shuffle_arr2 = arr2[per, :, :, :]
    shuffle_arr3 = arr3[per, :, :, :]
    return shuffle_arr1, shuffle_arr2, shuffle_arr3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值