如何在MATLAB中为神经网络重新排序测试数据集?

时间:2017-05-13 15:26:11

标签: arrays matlab sorting vector neural-network

我在一个文件夹中有300张图片,我用它作为验证神经网络的数据集。

每张图片的标签均为10。我将图像转换为MATLAB中的矩阵,并将标签转换为10的300x1向量,对应于矩阵中的每一行图像。

我注意到标签不平衡,这会影响网络。如何为每行图像保持相同的零或一个指示重新排序标签?

这就是我的尝试:

我将每个中的1和0分成一个向量,现在我希望能够连续地在12行中放入至少两个和10个零,但我不知道如何。我用它来分割1和0:

ones = labels(labels(:,1)==1,:)
zeros = labels(labels(:,1)==0,:)

如何重新排列标签以消除不平衡标签的问题?

1 个答案:

答案 0 :(得分:0)

这将创建一个索引向量,应该均匀分布您的两组标签,以便它们在每个连续的12个标签集中大致平衡(请注意,这假设您的数据均匀分为12个集合,它在您的示例):

index = [find(labels(:, 1) == 1); find(labels(:, 1) == 0)];
index = reshape(reshape(index, [25 12]).', [], 1);

然后,您将使用此索引重新排序标签数组的行和任何关联数据(如图像数据数组):

labels = labels(index, :);
otherData = otherData(index, :);