keras做多层神经网络

一、 背景与目的

背景:配置好了theano,弄了gpu, 要学dnn方法。

目的:本篇学习keras基本用法, 学习怎么用keras写mlp,学keras搞文本的基本要点。

 

二、 准备

工具包: theano、numpy、keras等工具包

数据集: 如果下不来, 可以用迅雷下,弄到~/.keras/datasets/下面即可

代码位置:examples/reuters_mlp.py

三、 代码赏析

'''Trains and evaluate a simple MLP
on the Reuters newswire topic classification task.
'''from __future__ import print_function
import numpy as np
np.random.seed(1337)  # for reproducibilityfrom keras.datasets import reuters
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.utils import np_utils
from keras.preprocessing.text import Tokenizermax_words = 1000 #vocab大小
batch_size = 32 #mini_batch_size 
nb_epoch = 5 #大循环次数print('Loading data...')
(X_train, y_train), (X_test, y_test) = reuters.load_data(nb_words=max_words, test_split=0.2) #载入路透社语料
#打印 print(len(X_train), 'train sequences') print(len(X_test), 'test sequences')
#分类数目--原版路透社我记着是10来着,应该是语料用的是大的那个 nb_classes = np.max(y_train)+1 print(nb_classes, 'classes')print('Vectorizing sequence data...')
#tokenize tokenizer = Tokenizer(nb_words=max_words)
#序列化,取df前1000大
#这里有个非常好玩的事, X_train 里面初始存的是wordindex,wordindex是按照词大小来的(应该是,因为直接就给撇了)
#所以这个效率上还是很高的
#转化的还是binary,默认不是用tfidf X_train = tokenizer.sequences_to_matrix(X_train, mode='binary') X_test = tokenizer.sequences_to_matrix(X_test, mode='binary') print('X_train shape:', X_train.shape) print('X_test shape:', X_test.shape)print('Convert class vector to binary class matrix (for use with categorical_crossentropy)')
#这个就好理解多了, 编码而已 Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) print('Y_train shape:', Y_train.shape) print('Y_test shape:', Y_test.shape)print('Building model...') model = Sequential()
#第一层
#Dense就是全连接层 model.add(Dense(512, input_shape=(max_words,))) #输入维度, 512==输出维度 model.add(Activation('relu')) #激活函数 model.add(Dropout(0.5)) #dropout

#第二层 model.add(Dense(nb_classes)) model.add(Activation('softmax'))
#损失函数设置、优化函数,衡量标准 model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
#训练,交叉验证 history = model.fit(X_train, Y_train,nb_epoch=nb_epoch, batch_size=batch_size,verbose=1, validation_split=0.1) score = model.evaluate(X_test, Y_test,batch_size=batch_size, verbose=1) print('Test score:', score[0]) print('Test accuracy:', score[1])

 

四、 训练速度比较

此表调整到了相对好一点的两万词表,要不然我觉得讨论效果没什么意义

 训练时间-cpu训练时间-gpuval-cpuval-gpu
第一轮22s    3s7979
第二轮22s3s8181
第三轮23s3s8080
第四轮33s3s7879
第五轮40s3s8080

 

看的出来,即使是mlp,效果的提升也是非常非常大的。

 

转载于:https://www.cnblogs.com/lavi/p/5877767.html

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

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

相关文章

配置环境变量

由于写了一个关于生成签名需要配置环境变量,所以在这里顺便把配置环境变量的步骤说一下 1.右键点击计算机,然后点击高级系统设置 2.点击环境变量,下方出现的即为系统变量,双击path就能直接修改, 转载于:https://www.cn…

使用JavaFX AnimationTimer

回想一下,给AnimationTimer起个名字可能不是一个好主意,因为它不仅可以用于动画,还可以用于测量:fps速率,碰撞检测,模拟步骤,游戏主循环等实际上,大部分时间我都看到了AnimationTime…

python列表姓氏_python数据分析实例(六) 中国姓氏数据

bokeh联动柱状图,Excel空间柱状图、空间热力图,Echarts空间柱状图,常用函数:df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…

JavaFX 2 GameTutorial第3部分

介绍 Ť他是与一个六个部分组成的系列的第3部分的JavaFX 2游戏教程。 如果您错过了第1部分和第2部分 ,建议您在开始本教程之前先进行阅读。 回顾第二部分,我讨论了游戏循环的内部工作原理,其中我们使用动画(JavaFX Timeline &…

Selenium WebDriver + python 自动化测试框架

目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤、检查点,然后执行自动化工程,即可执行功能自动化测试用例,包…

mysql游戏减少积分活动图_plantuml-绘制状态图和活动图和部署图​

背景状态图:对象的所有状态,以及基于事件发生的状态改变的过程;活动图:用例的工作流程;部署图:系统的软硬件物理体系结构;状态图基本语法元素语法说明开始和结束状态[*]标识开始和结束状态箭头-…

windows中当你的键盘无法使用时我们可以用另一种方法哦

1.使用WinR打开cmd窗口 2.输入osk回车就出现了一个虚拟的小键盘啦,当你的键盘坏掉后非常实用哦 转载于:https://www.cnblogs.com/qianzf/p/6780496.html

python web.py 404_找不到web.py开发服务器-favicon.ico-404

py API文档引用了一个“web.SEE OTHER()”函数,该函数生成一个303 SEE OTHER响应,将浏览器重定向到另一个位置。(请参见http://webpy.org/docs/0.3/api#web.application)这是一个服务器端的解决方案,它不需要在html文件中更改头;如…

NetBeans 7.2引入了TestNG

代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta:更快,更有用》一文中所讨论的那样, NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外,我在该帖子中没有进一步阐述&…

Javascript模块化编程(三):require.js的用法

一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码&…

[KISSY5系列]淘宝全终端框架 KISSY 5--从零开始使用

KISSY 是淘宝一个开源的 JavaScript 库,包含的组件有:日历、图片放大镜、卡片切换、弹出窗口、输入建议等 一、简介 KISSY 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。 除了完备的工具集合如 DOM、Event、Ajax、Anim 等它还提供了经典的…

几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...

主题刚开始的时候做了两个小方案!第一个是直接Excel处理完导入,但是这个导入的话虽然简单出错率很大!第二个是想直接用php做个小程序直接导入数据,但是想了想2万条数据处理,百分之百浏览器会一直转,最后不知…

JDeveloper中的Java反编译器

Java Decompiler是一个独立的图形实用程序,显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何将此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加到Jdevelo…

NGUI学习随笔

一、NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加。(注:用Component添加无效)。2. Attach an Anchor:表示为该物体添加了…

Git 修改源地址

git remote set-url origin http://git.xxx.com/xxx/repo.git 转载于:https://www.cnblogs.com/savokiss/p/5892543.html

mysql主从进行扩展_MySQL 主从扩展

MySQL 主从扩展常见问题排查1. 数据不一致:SHOW SLAVE STATUS \G;Last_Errno:1062Last_Error:ErrorDuplicate entryxxxn-66-77for key1on query.Defaultdatabase:guild.Query:insert into pynpcrecord setMapCode xxxn, UpdateTime 2015-08-0700:00:32解决方法: 在从库上将重复…

JRockit – JRCMD有用的命令

自2007年以来,我一直在使用JRockit。我发现它比Hotspot速度慢,但在诊断和分析问题上总是更好。 从去年夏天开始,我一直在为一家国际电信系统供应商工作。 我们在HP OpenCall Convergent Communication Platform之上为电信运营商设计和实施各种…

Spark Streaming整合logstash + Kafka wordCount

1、安装logstash,直接解压即可 测试logstash是否可以正常运行 bin/logstash -e input { stdin { } } output { stdout {codec > rubydebug } } 只获取消息 bin/logstash -e input { stdin { } } output { stdout {codec > plain { format > "%{messag…

js 变量类型

变量类型分为:基础类型和引用类型 基础类型:boolean, string, number, null, undefined, symbol 引用类型: array, object typeof: 判断变量的类型instanceof:判断某个对象是否是另外一个对象的实例主要还是理解这两个判断的不同之处&#xf…

python 相对导入_python 相对导入与绝对导入

Python 相对导入与绝对导入Python | Jul 21, 2016 | pythonPython 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。Python import 的搜索路径1.在当前目录下搜索该模块2.在环境变量 sys.path 中指定的路径列表中依…