neural-network - 为什么添加更多层会使我的中性网络变得更糟?
问题描述
我有点困惑......我首先开始:
model = Sequential() # (32, 32, 3)
model.add(Conv2D(4, (3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(8, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
还有两个模型,其中一个额外的块在模型 2 中Conv2D, Conv2D, MaxPool, Dropout
具有 16 和 32 个卷积滤波器,在模型 3 中具有两个额外的块,具有 16、32、64、128 卷积滤波器。我的最大准确率分别约为 75%、78%、82%……
然后我将第一个模型的 Conv2D 中的过滤器数量更改为 16 和 32,将平面层中的节点数量更改为 300,并获得 97% 的准确率。但是,更改模型 2 和 3,它们与模型 1 基本相同,但层数更多,并没有提高准确性,实际上反而使情况变得更糟……我在额外的 Conv 层中尝试了不同数量的过滤器和不同数量的平面层中的节点,从 300 到 1500,但似乎没有什么不同。无论如何,层数最少的第一个模型似乎做得最好。
这是为什么?
解决方案
推荐阅读
- css - 使用 dart sass 实现,grunt-sass 不编译 css 文件而不抛出错误
- asp.net-mvc - 浏览器应重定向时返回 json
- java - 与异常处理有关的基本 Java While(true) 问题
- salt-stack - 如何用盐重新启动系统服务?
- database - 什么是数据库上下文中的分类帐?
- sql - 电子邮件地址作为 SQL 中的表
- django - 替换 django `render_options`
- angularjs - x 多个 ng-repeats 的角度指令,底层数组集合的深度未知
- swift - 使用多次上传更新 Firebase 数据库对象
- python - 从 Pandas DataFrame 中删除所有非字母数字字符