如何解决卷积自动编码器用于分类问题
我遵循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或自动编码器的经验?
解决方法
这是因为前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的原因是训练整个网络,这可能很慢,因为更改会反向传播到整个网络。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。