如何评估用于降维的自动编码器

2024-10-02 00:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用自动编码器作为降维技术,将学习到的表示作为低维特征,可用于进一步分析

代码片段:

# Note: implementation --> based on keras 
encoding_dim = 32

# Define input layer
X_input = Input(shape=(X_train.shape[1],))
# Define encoder:
encoded = Dense(encoding_dim, activation='relu')(X_input)
# Define decoder:
decoded = Dense(X_train.shape[1], activation='sigmoid')(encoded)
# Create the autoencoder model
AE_model = Model(X_input, decoded)
#Compile the autoencoder model
AE_model.compile(optimizer='adam', loss='mse')
#Extract learned representation
learned_feature = Model(X_input, encoded)

history = AE_model.fit(X_train, X_train, epochs=10, batch_size=32)

我在寻找一种方法来衡量所学表达的质量。我发现一种方法是测量重建误差。我使用以下代码执行此操作:

import math
reconstr_error = AE_model.evaluate(X_train, X_train, verbose=0)
print('The reconstruction error: %.2f MSE (%.2f RMSE)' % (reconstr_error , math.sqrt(reconstr_error )))

结果我得到了0.00毫秒(0.05 RMSE)。然而,我不确定上述代码是否正确,以衡量重建误差?。 另外,如果有其他方法,请告诉我


Tags: 方法代码inputmodeltrainerroractivationencoding
1条回答
网友
1楼 · 发布于 2024-10-02 00:20:28

你做压缩的目的是什么?如果您的项目中有以下分类器模型,您可以使用正常(未输入到AE)数据训练该模型,并查看精度或您正在测量的任何内容。然后训练相同的模型,但在使用AE压缩数据之后。然后,如果你也得到了比较好的结果,这意味着你正在提取一些有用的自动编码器。特别是如果你不使用你所有的数据来训练AE,看看压缩AE在训练中没有看到的例子会如何影响准确性

在其他技术中,比如PCA,主成分是特征向量,这些特征向量的对应特征值实际上是非常有意义的,它们告诉你数据中有多少信息在每个方向上变化,就像方差一样。但在AE中,尤其是深层次的AE中,这种分析不是直观的,或者至少超出了我的知识范围(如果它们存在的话)。但在1层AE中,也许你仍然可以做一些类似的事情,实际上,以MSE为目标的1层AE与PCA非常接近。您可以在隐藏层中提取这些权重,也可以对数据协方差矩阵应用PCA或特征分解。然后计算这些隐藏层权重和特征向量之间的余弦距离,看看它是否保留了一些有意义的东西

我不知道还有什么可以做,但如果这对你来说很重要的话,也许你能找到一些文件来解决这些问题

相关问题 更多 >

    热门问题