如何解决自动编码器的层架构和输入形状
我正在使用高度不平衡的数据来执行多类分类任务。我选择采用我从一篇论文中读到的方法,在该方法中,他们使用了一组自动编码器来开发模型,这对于不平衡的分类看起来很有希望。
在原始论文中,每个自动编码器均按类别进行培训(例如,在3类问题中使用3个自动编码器)。这些新的自动编码器对新输入的数据进行预测,并选择损耗最小的自动编码器作为分类输出。
他们的实现是密集层的堆栈(可能是因为它们的输入是要素的二维矩阵),例如(骨架代码):
# encoder
autoencoder.add(Dense(200,input_shape=(self.input_dim,),activation='relu'))
autoencoder.add(Dense(100,activation='relu'))
autoencoder.add(Dense(80,activation='linear'))
autoencoder.add(Dense(encoding_dim,activation='linear'))
#decoder
autoencoder.add(Dense(80,activation='linear'))
autoencoder.add(Dense(100,activation='relu'))
autoencoder.add(Dense(200,activation='relu'))
autoencoder.add(Dense(self.input_dim,activation='linear'))
但是,在我自己的情况下,输入是一个4D数组,其中包含定长为(1,100,4)
的定长段,所以:
print(train_x.shape)
(140508,1,4)
我想知道如何将这种形状的输入(以输入为例)传递给密集层,假设我原样使用它们的实现。如果没有,我应该在编码器的第一个密集层和解码器的最后一个密集层之前添加一个平坦层(在这种情况下,输入重构是一个问题)。我是否应该修改此实现以改为使用卷积层(因为此输入可以直接传递到卷积层)。
我使用自动编码器的经验为零。自动编码器中的层体系结构(完全连接的层与卷积层)有何关系?这里的任何指南将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。