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'])

非常感谢您的建议.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)

文章目录什么是代理模式一. 代理模式简介二. 静态代理模式三. 动态代理模式万能模版前言:笔记基于狂神设计模式视频、《大话设计模式》观后而写 (最近一直在更新之前的刷题博客,今天久违地更新一篇新博客啦~) 什么是代…

js 正则 长度不超过50_如何花不超过50元人民币,拍抖音网红海马体照片?

前段时间,抖音上的海马体-网红照一夜间爆发!火了!海马体照相馆又一次被推上了时尚潮流的打卡风口,深受年轻群体的青睐。其中当然也包括我~这个风我还是特别想要跟一波的。但是想必大家都知道,海马体照相馆生意一直火爆…

多核处理器_英特尔十代酷睿i5-10400大战R5 3600,到底谁是千元处理器一霸?

Hello大家好,我是兼容机之家的小牛。要说英特尔十代酷睿中最走量的处理器,莫过于i5 10400这颗千元神U了。最近我们兼容机之家推出了几款搭载i5 10400等十代酷睿CPU的主机,性价比非常不错,小伙伴可以翻看一下我们往期的文章。今天就…

项目日报模板_第一届全国技能大赛现场直击:混凝土建筑项目全场最“高”

大洋网讯 混凝土建筑项目的比赛场馆位于室外,高达12米,让这个项目成为全场最“高”项目。“在现代化大型工地,都是用泵车浇灌混凝土,我们这里比赛也模拟了这一个工地的现实场景,让选手使用泵车浇灌混凝土。泵车的手臂要…

【LeetCode笔记】51. N 皇后(DFS、经典题)

文章目录题目描述思路 && 代码题目描述 经典题了…但是大一敲过后就再没碰过了。结果面试还是会问 ,今天补一下~ 思路 && 代码 还是挺清晰的,要点如下: 使用 DFS,找到一个了再继续找对每一行&…

matlab中结束脚本运行_matlab学习总结(入门篇)

更新(2020.3.31):发现MATLAB在网络经济学的仿真模拟方面有很大帮助,主要是构造一个 的方阵来刻画任意两个个体之间的关系。更新(2017.6.11):最近用matlab完成了随机过程的两次编程作业,感觉还是…

表格c1等于a1加b1_中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!...

导读:中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!现在社会上的汽车越来越多了,而车主们,想要行车上路,除了要有车,还要有一样必须的东西,那就是驾照。驾照…

【LeetCode笔记】117.填充每个节点的下一个右侧节点指针 II(二叉树、DFS)

文章目录题目描述思路 && 代码题目描述 很烦…面试被这题干碎了,赶紧给查漏补缺一波! 思路 && 代码 主要思路:先右,再左(因为左边依赖右边!)getNext():当前节点…

r720支持多少频率的内存吗_电脑基础知识:内存条知识大全,看完小学生都了解...

一、基础知识如果你不了解内存条,如果你只知道内存容量越大越好,如果你想更加了解内存条,不妨来看看这里,今天给大家分享那些最简单也是最容易理解的内存条知识。1、定义、作用内存条又叫随机存取存储器,是一种存储技术…

关键词堆砌生成器_网络推广软件的使用和24种关键词挖掘方法

第398-399期网络推广学习,主讲课程:推广软件的使用和24种关键词的挖掘方法。具体内容如下:一、商务卫士(宣传易)主要的功能:1.商情推广2,产品添加(20个以上)3.百宝箱>…

【LeetCode笔记】299. 猜数字游戏 (Java、偏数学)

文章目录题目描述思路 && 代码题目描述 顶级阅读题!今天的每日一题,感觉评论区大佬的写法挺值得记录的,就又水了一篇答题文~ 思路 && 代码 O(n)、O(1)核心代码:Case 2 的两个 if 处理,…

currenthashmap如何实现线程安全_什么是多线程?如何实现多线程?

什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管家等等。什么是线程?进程想要执行任务就需要依赖线程。换句话说,就是进程中的…

python字典会自动排序_python中字典不自动排序的用法

1、python 字典的用法from collections import OrderedDictdict OrderedDict()dict[foo]3dcit[aol]12、python中删除指定类型的文件import sys, csv , operatorimport osimport globfor i in range(0, 10):path "C:\\Folder_" str(i)for infile in glob.glob( os.p…

【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)

文章目录题目描述思路 && 代码DFS动态规划新系列~用于区分开高频题和每日一题~ 题目描述 一眼二分,但是实际上并不是这题让我想到社团的猜数字游戏…但是给钱是真过分了 思路 && 代码 DFS 自底向上进行递归。Math.max(…

python汉字同义词替换_python同义词替换的实现(jieba分词)

TihuanWords.txt文档格式注意:同一行的词用单个空格隔开,每行第一个词为同行词的替换词。年休假 年假 年休究竟 到底回家场景 我回来了代码import jiebadef replaceSynonymWords(string1):# 1读取同义词表,并生成一个字典。combine_dict {}#…

python去重语句_Python对列表去重的多种方法(四种方法)

无聊统计了下列表去重到底有多少种方法。下面小编给大家总结一下,具体内容详情如下; 开发中对数组、列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后面两…

【LeetCode笔记 - 每日一题】318. 最大单词长度乘积(Java、位运算)

文章目录题目描述思路 && 代码题目描述 挺不错!有bitmap的感觉了。 思路 && 代码 思路好想:两两对比,无公共判断,维护 res那么,如何进行公共判断?这个是主要的问题给每个字符串&#x…

技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...

“导读:在很多人的认知里,软件著作权是软件著作权,专利是专利,两者并没有太多关联。甚至有的人认为,软件产品只能申请软件著作权保护,不能申请专利保护。但是,当有人抄袭你的软件设计理念&#…

python如何爬虫eps数据_入门Python爬虫 -- 解析数据篇

元素)。一般情况下,网页头部分会定义HTML文档的编码以及网页的标题。而网页体部分则决定着一个网页中的正文内容。 # 一个最基本的HTML文档:# 网页头部分内容# 定义文档编码 文档的标题# 网页头部分内容结束# 网页体部分内容 文档的正文内容#…

【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)

文章目录题目描述思路 && 代码题目描述 中等题,很赞!第一次碰到涉及洗牌算法的题有点涉及概率,主要是要实现公平的随机 思路 && 代码 采用了 Knuth 洗牌算法,可以看看这篇博客时间复杂度O(N),空间…