首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CNN不能在简单的MLP网络上提供更高的精确度?[来自Keras的例子]

为什么CNN不能在简单的MLP网络上提供更高的精确度?[来自Keras的例子]
EN

Data Science用户
提问于 2017-05-17 04:56:08
回答 1查看 817关注 0票数 3

我仍然是机器学习的新手,刚遇到强大的深度学习库,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

EN

回答 1

Data Science用户

回答已采纳

发布于 2017-05-17 07:27:23

CNN (和RNN)模型并不是MLP设计的一般改进。它们是与某些类型的问题相匹配的特定选择。当数据中有一些局部模式(可能在其他位置重复)时,CNN的设计效果最好,而当输入是图像、音频或其他类似信号时,情况往往是这样。

路透社的例子看上去像是“一袋袋单词”的输入。CNN无法利用这些数据中的局部模式或重复关系。

在我看来,CNN在这组数据上的结果是合理的。你没有犯错误,但你学会了CNN是如何处理这些数据的。

票数 4
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/19020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档