随机打乱Pandas Dataframe数据
在深度学习应用中,通常用Pandas Dataframe数据来维护一张图片-标签映射表,如下所示:
id class_num
0 train_0000.jpg 0
1 train_0001.jpg 0
2 train_0002.jpg 0
3 train_0003.jpg 0
4 train_0004.jpg 0
在训练过程中,我们不希望模型对训练数据的输入顺序产生依赖,所以,每轮(epoch)训练,都将该图片-标签映射表随机打乱。实现随机打乱Pandas Dataframe数据最方便的方法是用sklearn.utils.shuffle()函数,范例代码如下:
train_images = pd.read_csv(FILE, usecols=['id', 'class_num'])
print(train_images.head(10)) # 没有打乱的数据
id class_num
0 train_0000.jpg 0
1 train_0001.jpg 0
2 train_0002.jpg 0
3 train_0003.jpg 0
4 train_0004.jpg 0
5 train_0005.jpg 1
6 train_0006.jpg 1
7 train_0007.jpg 2
8 train_0008.jpg 3
9 train_0009.jpg 3
import sklearn
df = sklearn.utils.shuffle(train_images) #随机打乱
print(df.head(10))
id class_num
862 train_0862.jpg 2
327 train_0327.jpg 2
596 train_0596.jpg 1
181 train_0181.jpg 0
131 train_0131.jpg 3
880 train_0880.jpg 0
256 train_0256.jpg 2
70 train_0070.jpg 3
604 train_0604.jpg 0
1042 train_1042.jpg 0