在 Keras 中使用自动编码器减少数据集的维度

Posted

技术标签:

【中文标题】在 Keras 中使用自动编码器减少数据集的维度【英文标题】:Reducing dimension of a DataSet with Autoencoders in Keras 【发布时间】:2021-10-14 05:45:35 【问题描述】:

我正在尝试减少数据集的实例和变量。我的数据集的形状是(x , y)y 是列,x 是行。我想把它减少到(k, m)

但是,在 Keras 中,我不知道如何告诉我的程序我想要那个编码维度。通常我使用input_shape = (y ,),例如:

input_layer = Input(shape=(y, ))
encoder_layer_1 = Dense(m)(input_layer)
decoder_layer_1 = Dense(y)(encoder_layer_1)
autoencoder = Model(input_layer, decoder_layer_1)
autoencoder.compile(optimizer = 'adam', loss='mse')
encoder_model = Model(inputs=input_layer, outputs=encoder_layer_1)
encoded_train = pd.DataFrame(encoder_model.predict(X_train))

但是,如果我这样做,那么 encoded_train 的形状将是 (x,m),而不是 (k,m)

我该如何改变呢?我不知道如何减少 Keras 中的两个维度。

【问题讨论】:

不,这在自动编码器的标准公式中是不可能的,所以这不是编程问题。 【参考方案1】:

同时减少 x 和 y 将要求您将数据集视为单个数据点,我认为这不是一个好主意。

不过,将您的数据集重塑为 (x, y, 1) 并使用 con2d 层应该可以解决您的目的。

【讨论】:

以上是关于在 Keras 中使用自动编码器减少数据集的维度的主要内容,如果未能解决你的问题,请参考以下文章

自动编码器以减少输入数据大小

三系减低编码怎么编

Keras去噪自动编码器(表格数据)

高保真的音频编解码器模块及方案解析

Keras 自动编码器分类

使用预训练 vgg19 tensorflow,Keras 在 CNN 自动编码器中定义自定义损失(感知损失)