我有一个数据集,其中包含不同类别的N
记录和D
数字属性。C
我使用堆叠自动编码器进行分类任务的特征提取:它采用输入向量,并将其映射到隐藏表示 ( )。
我的问题是:如果我们将最中间层的输出(即)作为我们的特征集,对于每类数据(),如何我们意识到这个特征集的哪个子集对识别类的影响最大。
例如:对于 MNIST,我们有N=60000
、D=784
和C=10
。具有这种架构的自动编码器:
d=784
inp = Input(shape=(d,))
x = Dense(d, activation='relu')(inp)
x = Dense(d//2, activation='relu')(x)
x = Dense(d//8, activation='relu')(x)
y = Dense(d//128, activation='relu')(x)
x = Dense(d//8, activation='relu')(y)
x = Dense(d//2, activation='relu')(decoded)
x = Dense(d, activation='sigmoid')(x)
model = Model(input_img, z)
产生一个。例如,在这里我们看到了 layer的 digit和的输出:y
5
9
class y_1 y_2 y_3 y_4 y_5 y_6
9 1.09 9.59 1.58 8.47 1.14 7.25
9 2.13 1.34 4.00 8.59 1.53 1.36
5 7.19 7.52 4.58 5.04 1.09 5.35
5 9.80 1.55 1.46 5.06 6.49 3.51
如果我们将层 y 连接到softmax
密集层:
out = Dense(num_classes, activation='softmax')(y)
encoded = Model(input_img, out)
新模型encoded
为我们提供了关于98%
. 那么,如果我们考虑新的表示,y
作为一个有效提取的特征向量,将这个特征向量的一个子集分配给每个数字是否合理?y
或者,将向量与C
不同类相关联的正确方法是什么?