我正在做一个CNN项目,我需要先对标签进行预处理。
图像文件是一个频谱图,每个文件在数组中都有250个值的标签。它告诉特定频谱图中存在的音高值序列。例如,一个标签文件如下所示:
[ 0 0 0 0 0 0 0 0 0 0 0 57 57 57 57 57 57 57 57 58 58 57 57 57
0 0 0 0 0 56 57 57 56 56 56 56 56 56 56 56 56 57 57 58 59 61 62 62
63 64 64 63 64 64 64 64 0 0 0 0 64 64 64 64 63 63 63 63 63 64 63 64
64 64 65 66 66 66 66 66 65 65 66 66 66 66 65 0 0 0 0 65 65 65 66 66
66 66 66 65 65 65 0 0 0 0 64 64 64 64 64 64 64 64 64 64 64 64 64 64
63 0 0 0 0 0 0 0 0 0 0 0 0 0 60 60 60 60 61 61 62 62 62 62
62 62 62 61 0 0 0 62 62 62 62 62 62 62 62 62 62 62 62 60 0 62 61 60
61 61 61 61 61 61 61 61 61 60 0 0 0 0 0 61 60 60 60 61 61 61 61 61
61 0 0 0 0 0 0 59 59 59 59 58 58 59 59 59 59 0 0 0 0 0 0 0
59 59 58 58 59 59 59 59 59 59 0 0 0 0 58 57 57 57 57 57 57 57 57 57
57 57 58 57 0 0 0 0 0 0]
汇总所有标签文件后,我发现这些标签中存在这51个唯一值。我将此值存储在数组中。
y_train = # y_test also contains these values
[ 0 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56 57 58
59 60 61 62 63 64 65 66 67 68
69 70 71 72 73 74 76 77 81 83
85]
to_categorical
在进行CNN计算之前,我需要执行确定类号(在我的情况下为51)的方法。您可以在此处查看to_categorical
文档。
我已经完成了,但是结果是86,而不是51。我认为是因为我的标签已经是整数格式,并且该方法认为我有86个唯一值,其完整顺序从0到85,而实际上只有51个唯一值,范围从0到85,但不完整(请参阅参考资料y_train
)。
# convert to array first. y_train and y_test are labels for an image X_train and X_test.
y_train = np.array(y_train) # labels for X_train images
y_test = np.array(y_test) # labels for X_test images
# do to_categorical
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# shape result
y_train: (638, 250, 86) # 638 = total data, 250 = 1 data length, 86 = num_class
y_test: (161, 250, 86) # 161 = total data, 250 = 1 data length, 86 = num_class
然后,我想到一个想法,将所有唯一值映射到一个新的整数,使to_categorical
方法认为我只有51个类,例如:
0 -> 0
30 -> 1
31 -> 2
32 -> 3
...
85 -> 51
Python中有没有一种方法可以从y_train
数组实现这种映射?如果有的话,我可以在计算完成后将其恢复为原始值吗?谢谢。
是的,您可以为所有这些映射制作字典,如下所示
map_dict = {}
for i, value in enumerate(y_train):
map_dict[i] = value
您的新类别将是map_dict的键,您可以像下面这样获得
list(map_dict.keys())
以后,每当您需要回头查看原始值时,只需像这样检查map_dict
map_dict[k]
要同时打印字典中的键和值,请执行以下操作,
for key, value in map_dict.items():
print(key, ' --->', value)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句