我正在做一个分类任务,它使用字节序列作为样本。通过对每个字节x应用x/255,可以将一个字节序列标准化为神经网络的输入。这样,我训练了一个简单的MLP,准确率约为80%。然后,我训练了一个自动编码器使用'mse'损失的全部数据,看看它是否工作得很好的任务。我冻结编码器层的权重,并添加一个softmax稠密层进行分类。我重新训练了新模型(只训练了最后一层),令我惊讶的是,结果比MLP差得多,只有60%的准确率。你知道吗
自动编码器不能从所有数据中学习好的特性吗?为什么结果如此糟糕?你知道吗
Tags:
可能采取的措施:
“为什么结果这么糟糕?”这其实并不意外。你已经训练了一个模型,使其善于压缩信息。它在每一层学习到的转换对于任何其他类型的任务都不一定是好的。事实上,它可能会丢弃大量的信息,这些信息对于您所拥有的任何辅助分类任务都非常有用,但对于纯粹压缩和重建序列的任务来说,这些信息是不需要的。你知道吗
与其通过训练一个单独的自动编码器来实现它,不如直接将MLP层中的稀疏性惩罚项添加到损失函数中,或者使用其他类型的正则化,比如dropout。最后,您可以考虑更高级的网络体系结构,如ResNet/ODE层或Inception层,这些结构针对1D序列进行了修改。你知道吗
相关问题 更多 >
编程相关推荐