将 softmax 分类器分层到 RNN 自动编码器中

Posted

技术标签:

【中文标题】将 softmax 分类器分层到 RNN 自动编码器中【英文标题】:Layering softmax classifier into RNN autoencoder 【发布时间】:2021-08-11 18:26:12 【问题描述】:

我正在实施的论文是使用带有自动编码器的 RNN 对异常网络数据进行分类(二进制分类)。他们首先在无监督的情况下训练模型,然后描述了这个过程:

接下来进行微调训练(有监督),训练最后一层 使用标记样本的网络。使用实现微调 监督训练准则可以进一步优化整个网络。 我们使用 softmax 回归层,顶部有两个通道 层

目前,我已经实现了自动编码器:

class AnomalyDetector(Model):
    def __init__(self):
        super(AnomalyDetector, self).__init__()
        self.encoder = tf.keras.Sequential([
            layers.Dense(64, activation="relu"),
            layers.Dense(32, activation="relu"),
            layers.Dense(16, activation="relu"),
            layers.Dense(8, activation="relu")])

        self.decoder = tf.keras.Sequential([
            layers.Dense(16, activation="relu"),
            layers.Dense(32, activation="relu"),
            layers.Dense(64, activation="relu"),
            layers.Dense(79, activation='relu')
        ])

如何在 TensorFlow 中实现 softmax 回归层?

我无法理解这个过程,我应该向自动编码器添加另一层吗?我应该在类中添加另一个函数吗?

【问题讨论】:

【参考方案1】:

以防万一将来有人访问此- 您可以通过更改激活来创建 softmax 层。在我的例子中,我选择了 sigmoid 激活,因为 sigmoid 相当于 二元素 softmax。根据documentation。

class AnomalyDetector(Model):
    def __init__(self):
        super(AnomalyDetector, self).__init__()
        self.pretrained = False
        self.finished_training = False
        self.encoder = tf.keras.Sequential([
            layers.SimpleRNN(64, activation="relu", return_sequences=True),
            layers.SimpleRNN(32, activation="relu", return_sequences=True),
            layers.SimpleRNN(16, activation="relu", return_sequences=True),
            layers.SimpleRNN(8, activation="relu", return_sequences=True)])

        self.decoder = tf.keras.Sequential([
            layers.SimpleRNN(16, activation="relu", return_sequences=True),
            layers.SimpleRNN(32, activation="relu", return_sequences=True),
            layers.SimpleRNN(64, activation="relu", return_sequences=True),
            layers.SimpleRNN(79, activation="relu"), return_sequences=True])
            layers.SimpleRNN(1, activation="sigmoid")

【讨论】:

感谢您用您最终发现的工作方式回答您自己的问题,希望对您有所帮助!

以上是关于将 softmax 分类器分层到 RNN 自动编码器中的主要内容,如果未能解决你的问题,请参考以下文章

Softmax classifier

3Softmax分类器

多层自编码器的微调

Tensorflow 中可扩展、高效的分层 Softmax?

分层softmax

keras中的级联模型(自动编码器+分类器)