【问题标题】:Convolutional Autoencoder for classification problem分类问题的卷积自动编码器
【发布时间】:2020-08-20 17:56:57
【问题描述】:

我正在关注 Datacamp 关于使用卷积自动编码器进行分类的教程here。我在教程中了解到,我们只需要将自动编码器的头部(即编码器部分)堆叠到一个全连接层来进行分类。

堆叠后,生成的网络(卷积自动编码器)被训练两次。首先通过将编码器的权重设置为 false 为:

for layer in full_model.layers[0:19]:
    layer.trainable = False

然后设置回true,重新训练网络:

for layer in full_model.layers[0:19]:
    layer.trainable = True

我不明白为什么我们要这样做两次。有使用 conv-net 或自动编码器经验的人吗?

【问题讨论】:

    标签: python deep-learning conv-neural-network autoencoder


    【解决方案1】:

    这是因为前 19 层已经在这一行训练过:

    autoencoder_train = autoencoder.fit(train_X, train_ground, batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(valid_X, valid_ground))
    

    自动编码器的重点是降维。假设您有 1000 个功能,并且您想将其减少到 100 个功能。您使用编码器层和解码器层训练自动编码器。重点是可以将编码后的特征(由编码器层输出)解码回原始特征。

    在训练自动编码器后,解码器部分被丢弃,而是在编码器层之上添加一个全连接分类层,以从一组减少的特征中训练分类网络。这就是为什么将编码器层trainable 设置为false 以仅训练全连接分类层(以加快训练速度)。

    编码器层trainable再次设置为true的原因是为了训练整个网络,这可能会很慢,因为更改会反向传播到整个网络。

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 2020-08-20
      • 2018-07-14
      • 2018-11-12
      • 1970-01-01
      • 2019-12-01
      • 2017-11-11
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多