我仍然是机器学习的新手,刚遇到强大的深度学习库,Keras。
我已经阅读过Keras文档,并且在Github 这里上尝试了很少的Keras示例。我还从几个来源学习了一些深入学习的基本知识和概念,但在CNN和RNN中还没有得到真正的理解,这两个网络看起来非常强大。
因此,为了证明我的假设,我从Keras下载了reuters_mlp.py示例,该示例最初使用简单的MLP网络作为模型。我结合了从imdb_cnn.py例子到reuters_mlp.py例子的CNN思想,并观察了结果。
令人惊讶的是,结果并没有像我预期的那样出来。CNN的表现比简单的MLP网络最差。有人能解释一下为什么CNN的准确性低于简单的MLP网络吗?
以下是输出(Tensorflow作为后端)
8982个列车序列,2246个测试序列,46个等级,num_words=1000
MLP (sequences_to_matrix,mode=bianry)
1/5 8982/8982 ============================== - 3s -损失: 1.3236 - acc: 0.6984
2/5 8982/8982 ============================== - 2s -损失: 0.7182 - acc: 0.8250
3/5 8982/8982 ============================== - 2s -损失: 0.4544 - acc: 0.8864
Epoch 4/5 8982/8982 ============================== - 2s -损失: 0.3197 - acc: 0.9192
划时代5/5 8982/8982 ============================== - 2s -损失: 0.2511 - acc: 0.9356
1920/2246 ========================>..... - ETA: 0
测试损失: 1.05213204963测试准确度: 0.785396260071
CNN (pad_sequences):
1/5 8982/8982 ============================== -81 s-损失: 1.9794 - acc: 0.5181
2/5 8982/8982 ============================== - 78s损失: 1.4289 - acc: 0.6591
3/5 8982/8982 ============================== - 79s损失: 1.1546 - acc: 0.7175
Epoch 4/5 8982/8982 ============================== - 78s损失: 0.9639 - acc: 0.7663
Epoch 5/5 8982/8982 ============================== - 77s损失: 0.8378 - acc: 0.7935
2240/2246 ============================>。 - ETA: 0
测试损失: 0.960687935512,测试精度: 0.764470169243
发布于 2017-05-17 07:27:23
CNN (和RNN)模型并不是MLP设计的一般改进。它们是与某些类型的问题相匹配的特定选择。当数据中有一些局部模式(可能在其他位置重复)时,CNN的设计效果最好,而当输入是图像、音频或其他类似信号时,情况往往是这样。
路透社的例子看上去像是“一袋袋单词”的输入。CNN无法利用这些数据中的局部模式或重复关系。
在我看来,CNN在这组数据上的结果是合理的。你没有犯错误,但你学会了CNN是如何处理这些数据的。
https://datascience.stackexchange.com/questions/19020
复制相似问题