用于分类的堆叠自动编码器

Posted

技术标签:

【中文标题】用于分类的堆叠自动编码器【英文标题】:Stacked Autoencoder for Classification 【发布时间】:2021-12-19 03:56:49 【问题描述】:

我已经训练了一个堆叠的自动编码器,它只包含编码器部分,并在最后附加了一个分类器。模型如下:

input_ = layers.Input(shape=(78,))
encoder = layers.Dense(50,activation='relu')(input_)
encoder_one = layers.Dense(30,activation='relu')(encoder)
encoder_two = layers.Dense(15,activation='relu')(encoder_one)
classifier = layers.Dense(11,activation='softmax')(encoder_two)
autoencoder = Model(inputs=input_, outputs=classifier)

为了检查模型是否工作正常,我无法像 CNN 或 RNN 等其他模型那样预测类。我该如何做到这一点?很久以前,我在 tensorflow 1.6 中使用了带有最后一层的堆叠式自动编码器作为分类器。以前我是这样做的

y_pred = autoencoder.predict(X_test).ravel()

但上面的代码似乎不再适用于 Tensorflow 2.3。

【问题讨论】:

您需要澄清“似乎不起作用”,会发生什么? @Dr.Snoopy 如果您在 ravel() 函数下方看到我的 asnwer 用于做同样的事情,这就是为什么我不必担心找到阈值并将预测概率转换为它的原因想要的课程。我认为该 ravel() 函数不存在。我可能错了。 你说的对我来说没有意义,你还是需要正确描述问题,否则这个问题对其他人没有用。 ravel 确实存在于 numpy 中。 【参考方案1】:

使用分类器层和编码器预测类别的方法如下:

predicted_classes = autoencoder.predict(X_test)
predicted_classes = np.argmax(np.round(predicted_classes),axis=1)

【讨论】:

以上是关于用于分类的堆叠自动编码器的主要内容,如果未能解决你的问题,请参考以下文章

神经网络 - 深度自动编码器和堆叠自动编码器之间的区别 [关闭]

深度学习算法实践15---堆叠去噪自动编码机(SdA)原理及实现

Stacked AutoEncoder(堆栈自动编码器)

用于 keras 中可变大小图像的全卷积自动编码器

Keras 自动编码器分类

从 LSTM 自动编码器馈送分类器数据