python训练手势分类器_python-Keras分类器的准确性在训练过程中稳定...
我有以下神经网络,使用Tensorflow作为后端用Keras编写,我在Windows 10的Python 3.5(Anaconda)上运行:
model = Sequential()
model.add(Dense(100, input_dim=283, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(150, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(4, init='normal', activation='sigmoid'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
我正在使用我的GPU进行训练.在训练期间(10000个纪元),幼稚网络的准确性从0.25稳步提高到0.7到0.9之间,然后突然下降并保持在0.25:
Epoch 1/10000
6120/6120 [==============================] - 1s - loss: 1.5329 - acc: 0.2665
Epoch 2/10000
6120/6120 [==============================] - 1s - loss: 1.2985 - acc: 0.3784
Epoch 3/10000
6120/6120 [==============================] - 1s - loss: 1.2259 - acc: 0.4891
Epoch 4/10000
6120/6120 [==============================] - 1s - loss: 1.1867 - acc: 0.5208
Epoch 5/10000
6120/6120 [==============================] - 1s - loss: 1.1494 - acc: 0.5199
Epoch 6/10000
6120/6120 [==============================] - 1s - loss: 1.1042 - acc: 0.4953
Epoch 7/10000
6120/6120 [==============================] - 1s - loss: 1.0491 - acc: 0.4982
Epoch 8/10000
6120/6120 [==============================] - 1s - loss: 1.0066 - acc: 0.5065
Epoch 9/10000
6120/6120 [==============================] - 1s - loss: 0.9749 - acc: 0.5338
Epoch 10/10000
6120/6120 [==============================] - 1s - loss: 0.9456 - acc: 0.5696
Epoch 11/10000
6120/6120 [==============================] - 1s - loss: 0.9252 - acc: 0.5995
Epoch 12/10000
6120/6120 [==============================] - 1s - loss: 0.9111 - acc: 0.6106
Epoch 13/10000
6120/6120 [==============================] - 1s - loss: 0.8772 - acc: 0.6160
Epoch 14/10000
6120/6120 [==============================] - 1s - loss: 0.8517 - acc: 0.6245
Epoch 15/10000
6120/6120 [==============================] - 1s - loss: 0.8170 - acc: 0.6345
Epoch 16/10000
6120/6120 [==============================] - 1s - loss: 0.7850 - acc: 0.6428
Epoch 17/10000
6120/6120 [==============================] - 1s - loss: 0.7633 - acc: 0.6580
Epoch 18/10000
6120/6120 [==============================] - 4s - loss: 0.7375 - acc: 0.6717
Epoch 19/10000
6120/6120 [==============================] - 1s - loss: 0.7058 - acc: 0.6850
Epoch 20/10000
6120/6120 [==============================] - 1s - loss: 0.6787 - acc: 0.7018
Epoch 21/10000
6120/6120 [==============================] - 1s - loss: 0.6557 - acc: 0.7093
Epoch 22/10000
6120/6120 [==============================] - 1s - loss: 0.6304 - acc: 0.7208
Epoch 23/10000
6120/6120 [==============================] - 1s - loss: 0.6052 - acc: 0.7270
Epoch 24/10000
6120/6120 [==============================] - 1s - loss: 0.5848 - acc: 0.7371
Epoch 25/10000
6120/6120 [==============================] - 1s - loss: 0.5564 - acc: 0.7536
Epoch 26/10000
6120/6120 [==============================] - 1s - loss: 0.1787 - acc: 0.4163
Epoch 27/10000
6120/6120 [==============================] - 1s - loss: 1.1921e-07 - acc: 0.2500
Epoch 28/10000
6120/6120 [==============================] - 1s - loss: 1.1921e-07 - acc: 0.2500
Epoch 29/10000
6120/6120 [==============================] - 1s - loss: 1.1921e-07 - acc: 0.2500
Epoch 30/10000
6120/6120 [==============================] - 2s - loss: 1.1921e-07 - acc: 0.2500
Epoch 31/10000
6120/6120 [==============================] - 1s - loss: 1.1921e-07 - acc: 0.2500
Epoch 32/10000
6120/6120 [==============================] - 1s - loss: 1.1921e-07 - acc: 0.2500 ...
我猜这是由于优化器陷入了局部最小值,该最小值将所有数据分配到一个类别.我如何禁止它这样做?
我尝试过的事情(但似乎并没有阻止这种情况的发生):
>使用其他优化器(adam)
>确保培训数据包括每个类别中相同数量的示例
>增加培训数据量(目前为6000)
>在2到5之间变化类别的数量
>将网络中的隐藏层数从1增加到5
>更改图层宽度(从50到500)
这些都没有帮助.还有其他想法为什么会发生和/或如何抑制呢?难道是Keras中的错误?非常感谢您的任何建议.
编辑:
通过将最终激活更改为softmax(从sigmoid)并向最后两个隐藏层添加maxnorm(3)正则化,似乎已解决了该问题:
model = Sequential()
model.add(Dense(100, input_dim=npoints, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(150, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu', W_constraint=maxnorm(3)))
model.add(Dropout(0.2))
model.add(Dense(200, init='normal', activation='relu', W_constraint=maxnorm(3)))
model.add(Dropout(0.2))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.add(Dense(ncat, init='normal', activation='softmax'))
model.compile(loss='mean_squared_error', optimizer=sgd, metrics=['accuracy'])
非常感谢您的建议.
python训练手势分类器_python-Keras分类器的准确性在训练过程中稳定...相关推荐
- python吃显卡还是内存不足_解决pytorch GPU 计算过程中出现内存耗尽的问题
Pytorch GPU运算过程中会出现:"cuda runtime error(2): out of memory"这样的错误.通常,这种错误是由于在循环中使用全局变量当做累加器, ...
- python输入数据的维度_python – Keras LSTM输入维度设置
我试图用keras训练LSTM模型,但我觉得我在这里弄错了. 我收到了错误 ValueError: Error when checking input: expected lstm_17_input ...
- python和手势控制_Python手势识别与控制
# Python手势识别与控制 ## 概述 本文中的手势识别与控制功能主要采用 [OpenCV](https://opencv.org/) 库实现, OpenCV是一个基于BSD许可(开源)发行的跨平 ...
- python制作二级菜单_python实现二级登陆菜单及安装过程
python实现二级登陆菜单的代码如下所示: """ 1.三级菜单 注册 登陆 注销 2.进入每一个一级菜单,都会有下一级的菜单 """ u ...
- python有趣的工具_python好玩的小工具(正在create中)
思路:(可以不用key value来做,本次也没用到) 0)先创建new.xlsx 复制test.xlsx的所有内容,放到new.xlsx里 ,并 以key ,value的形式存base.xlsx数据 ...
- python自定义函数画图_python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条...
自定义colorbar(draw colorbar without any mapple/plot) 参考:Customized Colorbars Tutorial api example code ...
- python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解
Python数据可视化 pyecharts实现各种统计图表过程详解 发布时间:2020-09-10 04:53:26 来源:脚本之家 阅读:78 1.pyecharts介绍 Echarts是一款由百度 ...
- python six库安装_Python 安装matplotlib,six,dateutil,pyparsing 完整过程
因为matplotlib 需要依赖许多其他科学计算的第三方库,需要一个一个的安装了.. 1, 安装matplotlib 官网直接下载:http://matplotlib.sourceforge.net ...
- python pandas筛选数据_Python pandas从字符串列的数据选择中筛选出nan
放下它们:nms.dropna(thresh=2) 这将删除至少有两个非-NaN的所有行. 然后您可以删除名称所在的位置NaN:In [87]: nms Out[87]: movie name rat ...
最新文章
- 沈向洋、黄学东等大咖助阵,IoT in Action微软深圳物联网大会即刻报名
- Binder跨进程通信原理(三):Binder IPC实现原理
- BlockChain:《Blockchain Gate》听课笔记——区块链构筑的比特世界 VS 现实的原子世界
- 用编码实现gridview的创建!(一)(转www.asp.net)
- qt5中服务器文件传输,POST在Qt5中发送JSON文件的请求
- 阿里云、百度云被约谈 督促落实防范治理电信网络诈骗
- 汇编 align_从零开始自制操作系统(5):实模式汇编(二)
- 开启和关闭HBase的thrift进程
- 我在百度运维的成长经历 之五
- 2021如何运行带flash的html,2021年Flash被禁用后继续使用的方法
- PS黑作坊人像磨皮 精修 快速伪商业修图 插件 扩展面板
- wps桌面右键缺少新建文档入口
- 【Elasticsearch教程20】Pinyin拼音分词器 以及多音字修改
- python 马赛克拼图_用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图...
- 台式机没声音怎么样才能解决
- 36小时阿里大佬用了讲完的Java,整整372集,分分钟白嫖!!
- iOS编程------SQLite / 数据库
- 马氏距离例题详解(全网最详细)
- 基于蓝牙协议的无线网络化传感器设计
- codeforces1437C. Chef Monocarp
热门文章
- c语言转义字符_C语言啊中的转义符有什么含义?
- git 忽略__pycache___容易被忽略的 Python 命令行参数
- 计算机涉及数学知识点,初二数学知识点归纳
- android 拍照屏幕大小,Android Camera 找出屏幕的最佳尺寸大小
- OpenCV与图像处理学习十二——图像形状特征之HOG特征
- 求5阶矩阵其对角线上所有元素之和
- Android之Fragment(二)
- 安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪
- Spring Data JPA事务管理
- Jackson第二篇【从JSON字符串中取值】