如何评价深度学习框架keras框架

人工智能(5)
&div id=&article_details& class=&details&&
& & &div class=&article_title&& &&
& & & & &&span class=&ico ico_type_Original&&&/span&
& & & & &span class=&link_title&&&a href=&/u/article/details/&&
& & & & DeepLearning tutorial(6)易用的深度学习框架Keras简介 & & & &
& & & & & &
& & & & &/a&
& & & & &/span&
& & & & &div class=&article_manage clearfix&&
& & & & &div class=&article_l&&
& & & & & & &span class=&link_categories&&
& & & & & & 标签:
& & & & & & & &a href=&http://www.csdn.net/tag/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0%e6%a1%86%e6%9e%b6& target=&_blank& onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);&&深度学习框架&/a&&a href=&http://www.csdn.net/tag/keras& target=&_blank&
onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);&&keras&/a&&a href=&http://www.csdn.net/tag/theano& target=&_blank& onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);&&theano&/a&&a href=&http://www.csdn.net/tag/cnn&
target=&_blank& onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);&&cnn&/a&
& & & & & & &/span&
& & & & &/div&
& & & & &div class=&article_r&&
& & & & & & &span class=&link_postdate&& 17:03&/span&
& & & & & & &span class=&link_view& title=&阅读次数&&42197人阅读&/span&
& & & & & & &span class=&link_comments& title=&评论次数&& &a href=&#comments& onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])&&评论&/a&(76)&/span&
& & & & & & &span class=&link_collect tracking-ad& data-mod=&popu_171&& &a href=&javascript:void(0);& onclick=&javascript:collectArticle('DeepLearning+tutorial%ef%bc%886%ef%bc%89%e6%98%93%e7%94%a8%e7%9a%84%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0%e6%a1%86%e6%9e%b6Keras%e7%ae%80%e4%bb%8b','');return
& title=&收藏& target=&_blank&&收藏&/a&&/span&
& & & & & & &&span class=&link_report&& &a href=&#report& onclick=&javascript:report();& title=&举报&&举报&/a&&/span&
& & & & &/div&
& & &/div& & &&style type=&text/css&& & & & &
& & & & & & .embody{
& & & & & & & & padding:10px 10px 10
& & & & & & & & margin:0 -20
& & & & & & & & border-bottom:solid 1px # & & & & & & & &
& & & & & & }
& & & & & & .embody_b{
& & & & & & & & margin:0 ;
& & & & & & & & padding:10px 0;
& & & & & & }
& & & & & & .embody .embody_t,.embody .embody_c{
& & & & & & & & display: inline-
& & & & & & & & margin-right:10
& & & & & & }
& & & & & & .embody_t{
& & & & & & & & font-size: 12
& & & & & & & & color:#999;
& & & & & & }
& & & & & & .embody_c{
& & & & & & & & font-size: 12
& & & & & & }
& & & & & & .embody_c img,.embody_c em{
& & & & & & & & display: inline-
& & & & & & & & vertical-align: & & & & & & &&
& & & & & & }
& & & & & & &.embody_c img{ & & & & & & &&
& & & & & & & & width:30
& & & & & & & & height:30
& & & & & & }
& & & & & & .embody_c em{
& & & & & & & & margin: 0 20px 0 10
& & & & & & & & color:#333;
& & & & & & & & font-style:
& & & & & & }
& & &/style&
& & &script type=&text/javascript&&
& & & & $(function () {
& & & & & & try
& & & & & & {
& & & & & & & & var lib = eval(&(&+$(&#lib&).attr(&value&)+&)&);
& & & & & & & & var html = &&;
& & & & & & & & if (lib.err == 0) {
& & & & & & & & & & $.each(lib.data, function (i) {
& & & & & & & & & & & & var obj = lib.data[i];
& & & & & & & & & & & & //html += '&img src=&' + obj.logo + '&/&' + obj.name + &&&&;
& & & & & & & & & & & & html += ' &a href=&' + obj.url + '& target=&_blank&&';
& & & & & & & & & & & & html += ' &img src=&' + obj.logo + '&&';
& & & & & & & & & & & & html += ' &em&&b&' + obj.name + '&/b&&/em&';
& & & & & & & & & & & & html += ' &/a&';
& & & & & & & & & & });
& & & & & & & & & & if (html != &&) {
& & & & & & & & & & & & setTimeout(function () {
& & & & & & & & & & & & & & $(&#lib&).html(html); & & & & & & & & & & &
& & & & & & & & & & & & & & $(&#embody&).show();
& & & & & & & & & & & & }, 100);
& & & & & & & & & & }
& & & & & & & & } & & &
& & & & & & } catch (err)
& & & & & & { }
& & & & & &&
& & & & });
& & &/script&
& & & &div class=&category clearfix&&
& & & & &div class=&category_l&&
& & & & & &&img src=&http://static.blog.csdn.net/images/category_icon.jpg&&
& & & & & & &span&分类:&/span&
& & & & &/div&
& & & & &div class=&category_r&&
& & & & & & & & & & &label onclick=&GetCategoryArticles('2760005','u','top','');&&
& & & & & & & & & & & & &span onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);&&Machine Learning&em&(30)&/em&&/span&
& & & & & & & & & & & &img class=&arrow-down& src=&http://static.blog.csdn.net/images/arrow_triangle _down.jpg& style=&display:&&
& & & & & & & & & & & &img class=&arrow-up& src=&http://static.blog.csdn.net/images/arrow_triangle_up.jpg& style=&display:&&
& & & & & & & & & & & & &div class=&subItem&&
& & & & & & & & & & & & & & &div class=&subItem_t&&&a href=&http://blog.csdn.net/u/article/category/2760005& target=&_blank&&作者同类文章&/a&&i class=&J_close&&X&/i&&/div&
& & & & & & & & & & & & & & &ul class=&subItem_l& id=&top_2760005&& & & & & & & & & & & & & & &
& & & & & & & & & & & & & & &/ul&
& & & & & & & & & & & & &/div&
& & & & & & & & & & &/label& & & & & & & & & & &
& & & & &/div&
& & &/div&
& & & & &div class=&bog_copyright&& & & & &&
& & & & & & &p class=&copyright_p&&版权声明:本文为博主原创文章,未经博主允许不得转载。&/p&
& & & & &/div&
&div style=&clear:both&&&/div&&div style=&border:solid 1px # background:# float: min-width:200padding:4px 10&&&p style=&text-align:margin:0;&&&span style=&float:&&目录&a href=&#& title=&系统根据文章中H1到H6标签自动生成文章目录&&(?)&/a&&/span&&a href=&#&
onclick=&javascript:return openct(this);& title=&展开&&[+]&/a&&/p&&ol style=&display:margin-left:14padding-left:14line-height:160%;&&&li&&a href=&#t0&&Keras简介&/a&&/li&&li&&a href=&#t1&&Keras里的模块介绍&/a&&/li&&li&&a href=&#t2&&一个实例用CNN分类Mnist&/a&&/li&&/ol&&/div&&div
style=&clear:both&&&/div&&div id=&article_content& class=&article_content tracking-ad& data-mod=&popu_307& data-dsm=&post&&
& & & & &div class=&markdown_views&&&blockquote&
& &p&致读者:本文写于keras开发初期,目前keras已经迭代到1.0版本,很多API都发生了较大的变化,所以本文的粘贴的一些代码可能已经过时,在我的github上有更新后的代码,读者需要的话可以看github上的代码:&a href=&/wepe/MachineLearning& target=&_blank&&/wepe/MachineLearning&/a&&/p&
&/blockquote&
&p&之前我一直在使用Theano,前面五篇Deeplearning相关的文章也是学习Theano的一些笔记,当时已经觉得Theano用起来略显麻烦,有时想实现一个新的结构,就要花很多时间去编程,所以想过将代码模块化,方便重复使用,但因为实在太忙没有时间去做。最近发现了一个叫做Keras的框架,跟我的想法不谋而合,用起来特别简单,适合快速开发。&/p&
&h2 id=&1-keras简介&&&a name=&t0& target=&_blank&&&/a&1. Keras简介&/h2&
&p&Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。使用文档在这:&a href=&http://keras.io/& target=&_blank&&http://keras.io/&/a&,这个框架貌似是刚刚火起来的,使用上的问题可以到github提issue:&a href=&/fchollet/keras& target=&_blank&&/fchollet/keras&/a& &/p&
&p&下面简单介绍一下怎么使用Keras,以Mnist数据库为例,编写一个CNN网络结构,你将会发现特别简单。&/p&
&h2 id=&2-keras里的模块介绍&&&a name=&t1& target=&_blank&&&/a&2. Keras里的模块介绍&/h2&
&li&&p&&strong&Optimizers&/strong&&/p&
&p&顾名思义,Optimizers包含了一些优化的方法,比如最基本的随机梯度下降SGD,另外还有Adagrad、Adadelta、RMSprop、Adam,一些新的方法以后也会被不断添加进来。&/p&
&pre class=&prettyprint& name=&code&&&code class=&hljs avrasm has-numbering&&keras&span class=&hljs-preprocessor&&.optimizers&/span&&span class=&hljs-preprocessor&&.SGD&/span&(lr=&span class=&hljs-number&&0.01&/span&, momentum=&span class=&hljs-number&&0.9&/span&,
decay=&span class=&hljs-number&&0.9&/span&, nesterov=False)&/code&&ul class=&pre-numbering&&&li&1&/li&&/ul&&div class=&save_code tracking-ad& data-mod=&popu_249&&&a href=&javascript:;& target=&_blank&&&img src=&http://static.blog.csdn.net/images/save_snippets.png&&&/a&&/div&&/pre&
&p&上面的代码是SGD的使用方法,lr表示学习速率,momentum表示动量项,decay是学习速率的衰减系数(每个epoch衰减一次),Nesterov的值是False或者True,表示使不使用Nesterov momentum。其他的请参考文档。&/p&&/li&
&li&&p&&strong&Objectives&/strong&&/p&
&p&这是目标函数模块,keras提供了mean_squared_error,mean_absolute_error &&br&
,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy这几种目标函数。&/p&
&p&这里binary_crossentropy 和 categorical_crossentropy也就是常说的logloss.&/p&&/li&
&li&&p&&strong&Activations&/strong&&/p&
&p&这是激活函数模块,keras提供了linear、sigmoid、hard_sigmoid、tanh、softplus、relu、softplus,另外softmax也放在Activations模块里(我觉得放在layers模块里更合理些)。此外,像LeakyReLU和PReLU这种比较新的激活函数,keras在keras.layers.advanced_activations模块里提供。&/p&&/li&
&li&&p&&strong&Initializations&/strong&&/p&
&p&这是参数初始化模块,在添加layer的时候调用init进行初始化。keras提供了uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal这几种。 & &/p&&/li&
&li&&p&&strong&layers&/strong&&/p&
&p&layers模块包含了core、convolutional、recurrent、advanced_activations、normalization、embeddings这几种layer。&/p&
&p&其中core里面包含了flatten(CNN的全连接层之前需要把二维特征图flatten成为一维的)、reshape(CNN输入时将一维的向量弄成二维的)、dense(就是隐藏层,dense是稠密的意思),还有其他的就不介绍了。convolutional层基本就是Theano的Convolution2D的封装。&/p&&/li&
&li&&p&&strong&Preprocessing&/strong&&/p&
&p&这是预处理模块,包括序列数据的处理,文本数据的处理,图像数据的处理。重点看一下图像数据的处理,keras提供了ImageDataGenerator函数,实现data augmentation,数据集扩增,对图像做一些弹性变换,比如水平翻转,垂直翻转,旋转等。&/p&&/li&
&li&&p&&strong&Models&/strong&&/p&
&p&这是最主要的模块,模型。上面定义了各种基本组件,model是将它们组合起来,下面通过一个实例来说明。&/p&&/li&
&h2 id=&3一个实例用cnn分类mnist&&&a name=&t2& target=&_blank&&&/a&3.一个实例:用CNN分类Mnist&/h2&
&li&&p&&strong&数据下载&/strong&&/p&
&p&Mnist数据在其官网上有提供,但是不是图像格式的,因为我们通常都是直接处理图像,为了以后程序能复用,我把它弄成图像格式的,这里可以下载:&a href=&/s/1qCdS6& target=&_blank&&/s/1qCdS6&/a&,共有42000张图片。&/p&&/li&
&li&&p&&strong&读取图片数据&/strong&&/p&
&p&keras要求输入的数据格式是numpy.array类型(numpy是一个python的数值计算的库),所以需要写一个脚本来读入mnist图像,保存为一个四维的data,还有一个一维的label,代码:&/p&&/li&
&pre class=&prettyprint& name=&code&&&code class=&hljs python has-numbering&&&span class=&hljs-comment&&#coding:utf-8&/span&
&span class=&hljs-string&&&&&
Author:wepon
Source:/wepe
file:data.py
&&&&/span&
&span class=&hljs-keyword&&import&/span& os
&span class=&hljs-keyword&&from&/span& PIL &span class=&hljs-keyword&&import&/span& Image
&span class=&hljs-keyword&&import&/span& numpy &span class=&hljs-keyword&&as&/span& np
&span class=&hljs-comment&&#读取文件夹mnist下的42000张图片,图片为灰度图,所以为1通道,&/span&
&span class=&hljs-comment&&#如果是将彩色图作为输入,则将1替换为3,并且data[i,:,:,:] = arr改为data[i,:,:,:] = [arr[:,:,0],arr[:,:,1],arr[:,:,2]]&/span&
&span class=&hljs-function&&&span class=&hljs-keyword&&def&/span& &span class=&hljs-title&&load_data&/span&&span class=&hljs-params&&()&/span&:&/span&
& & data = np.empty((&span class=&hljs-number&&42000&/span&,&span class=&hljs-number&&1&/span&,&span class=&hljs-number&&28&/span&,&span class=&hljs-number&&28&/span&),dtype=&span class=&hljs-string&&&float32&&/span&)
& & label = np.empty((&span class=&hljs-number&&42000&/span&,),dtype=&span class=&hljs-string&&&uint8&&/span&)
& & imgs = os.listdir(&span class=&hljs-string&&&./mnist&&/span&)
& & num = len(imgs)
& & &span class=&hljs-keyword&&for&/span& i &span class=&hljs-keyword&&in&/span& range(num):
& & & & img = Image.open(&span class=&hljs-string&&&./mnist/&&/span&+imgs[i])
& & & & arr = np.asarray(img,dtype=&span class=&hljs-string&&&float32&&/span&)
& & & & data[i,:,:,:] = arr
& & & & label[i] = int(imgs[i].split(&span class=&hljs-string&&'.'&/span&)[&span class=&hljs-number&&0&/span&])
& & &span class=&hljs-keyword&&return&/span& data,label&/code&&ul class=&pre-numbering&&&li&1&/li&&li&2&/li&&li&3&/li&&li&4&/li&&li&5&/li&&li&6&/li&&li&7&/li&&li&8&/li&&li&9&/li&&li&10&/li&&li&11&/li&&li&12&/li&&li&13&/li&&li&14&/li&&li&15&/li&&li&16&/li&&li&17&/li&&li&18&/li&&li&19&/li&&li&20&/li&&li&21&/li&&li&22&/li&&li&23&/li&&li&24&/li&&li&25&/li&&/ul&&div
class=&save_code tracking-ad& data-mod=&popu_249&&&a href=&javascript:;& target=&_blank&&&img src=&http://static.blog.csdn.net/images/save_snippets.png&&&/a&&/div&&/pre&
&li&&p&构建CNN,训练&/p&
&p&短短二十多行代码,构建一个三个卷积层的CNN,直接读下面的代码吧,有注释,很容易读懂:&/p&&/li&
&pre class=&prettyprint& name=&code&&&code class=&hljs vala has-numbering&&&span class=&hljs-preprocessor&&#导入各种用到的模块组件&/span&
from __future__ import absolute_import
from __future__ import print_function
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.advanced_activations import PReLU
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.optimizers import SGD, Adadelta, Adagrad
from keras.utils import np_utils, generic_utils
from six.moves import range
from data import load_data
&span class=&hljs-preprocessor&&#加载数据&/span&
data, label = load_data()
print(data.shape[&span class=&hljs-number&&0&/span&], &span class=&hljs-string&&' samples'&/span&)
&span class=&hljs-preprocessor&&#label为0~9共10个类别,keras要求格式为binary class matrices,转化一下,直接调用keras提供的这个函数&/span&
label = np_utils.to_categorical(label, &span class=&hljs-number&&10&/span&)
&span class=&hljs-preprocessor&&###############&/span&
&span class=&hljs-preprocessor&&#开始建立CNN模型&/span&
&span class=&hljs-preprocessor&&###############&/span&
&span class=&hljs-preprocessor&&#生成一个model&/span&
model = Sequential()
&span class=&hljs-preprocessor&&#第一个卷积层,4个卷积核,每个卷积核大小5*5。1表示输入的图片的通道,灰度图为1通道。&/span&
&span class=&hljs-preprocessor&&#border_mode可以是valid或者full,具体看这里说明:http://deeplearning.net/software/theano/library/tensor/nnet/conv.html#theano.tensor.nnet.conv.conv2d&/span&
&span class=&hljs-preprocessor&&#激活函数用tanh&/span&
&span class=&hljs-preprocessor&&#你还可以在model.add(Activation('tanh'))后加上dropout的技巧: model.add(Dropout(0.5))&/span&
model.add(Convolution2D(&span class=&hljs-number&&4&/span&, &span class=&hljs-number&&1&/span&, &span class=&hljs-number&&5&/span&, &span class=&hljs-number&&5&/span&, border_mode=&span class=&hljs-string&&'valid'&/span&))&
model.add(Activation(&span class=&hljs-string&&'tanh'&/span&))
&span class=&hljs-preprocessor&&#第二个卷积层,8个卷积核,每个卷积核大小3*3。4表示输入的特征图个数,等于上一层的卷积核个数&/span&
&span class=&hljs-preprocessor&&#激活函数用tanh&/span&
&span class=&hljs-preprocessor&&#采用maxpooling,poolsize为(2,2)&/span&
model.add(Convolution2D(&span class=&hljs-number&&8&/span&,&span class=&hljs-number&&4&/span&, &span class=&hljs-number&&3&/span&, &span class=&hljs-number&&3&/span&, border_mode=&span class=&hljs-string&&'valid'&/span&))
model.add(Activation(&span class=&hljs-string&&'tanh'&/span&))
model.add(MaxPooling2D(poolsize=(&span class=&hljs-number&&2&/span&, &span class=&hljs-number&&2&/span&)))
&span class=&hljs-preprocessor&&#第三个卷积层,16个卷积核,每个卷积核大小3*3&/span&
&span class=&hljs-preprocessor&&#激活函数用tanh&/span&
&span class=&hljs-preprocessor&&#采用maxpooling,poolsize为(2,2)&/span&
model.add(Convolution2D(&span class=&hljs-number&&16&/span&, &span class=&hljs-number&&8&/span&, &span class=&hljs-number&&3&/span&, &span class=&hljs-number&&3&/span&, border_mode=&span class=&hljs-string&&'valid'&/span&))&
model.add(Activation(&span class=&hljs-string&&'tanh'&/span&))
model.add(MaxPooling2D(poolsize=(&span class=&hljs-number&&2&/span&, &span class=&hljs-number&&2&/span&)))
&span class=&hljs-preprocessor&&#全连接层,先将前一层输出的二维特征图flatten为一维的。&/span&
&span class=&hljs-preprocessor&&#Dense就是隐藏层。16就是上一层输出的特征图个数。4是根据每个卷积层计算出来的:(28-5+1)得到24,(24-3+1)/2得到11,(11-3+1)/2得到4&/span&
&span class=&hljs-preprocessor&&#全连接有128个神经元节点,初始化方式为normal&/span&
model.add(Flatten())
model.add(Dense(&span class=&hljs-number&&16&/span&*&span class=&hljs-number&&4&/span&*&span class=&hljs-number&&4&/span&, &span class=&hljs-number&&128&/span&, init=&span class=&hljs-string&&'normal'&/span&))
model.add(Activation(&span class=&hljs-string&&'tanh'&/span&))
&span class=&hljs-preprocessor&&#Softmax分类,输出是10类别&/span&
model.add(Dense(&span class=&hljs-number&&128&/span&, &span class=&hljs-number&&10&/span&, init=&span class=&hljs-string&&'normal'&/span&))
model.add(Activation(&span class=&hljs-string&&'softmax'&/span&))
&span class=&hljs-preprocessor&&#############&/span&
&span class=&hljs-preprocessor&&#开始训练模型&/span&
&span class=&hljs-preprocessor&&##############&/span&
&span class=&hljs-preprocessor&&#使用SGD + momentum&/span&
&span class=&hljs-preprocessor&&#pile里的参数loss就是损失函数(目标函数)&/span&
sgd = SGD(l2=&span class=&hljs-number&&0.0&/span&,lr=&span class=&hljs-number&&0.05&/span&, decay=&span class=&hljs-number&&1e-6&/span&, momentum=&span class=&hljs-number&&0.9&/span&, nesterov=True)
pile(loss=&span class=&hljs-string&&'categorical_crossentropy'&/span&, optimizer=sgd,class_mode=&span class=&hljs-string&&&categorical&&/span&)
&span class=&hljs-preprocessor&&#调用fit方法,就是一个训练过程. 训练的epoch数设为10,batch_size为100.&/span&
&span class=&hljs-preprocessor&&#数据经过随机打乱shuffle=True。verbose=1,训练过程中输出的信息,0、1、2三种方式都可以,无关紧要。show_accuracy=True,训练时每一个epoch都输出accuracy。&/span&
&span class=&hljs-preprocessor&&#validation_split=0.2,将20%的数据作为验证集。&/span&
model.fit(data, label, batch_size=&span class=&hljs-number&&100&/span&,nb_epoch=&span class=&hljs-number&&10&/span&,shuffle=True,verbose=&span class=&hljs-number&&1&/span&,show_accuracy=True,validation_split=&span class=&hljs-number&&0.2&/span&)&/code&&ul class=&pre-numbering&&&li&1&/li&&li&2&/li&&li&3&/li&&li&4&/li&&li&5&/li&&li&6&/li&&li&7&/li&&li&8&/li&&li&9&/li&&li&10&/li&&li&11&/li&&li&12&/li&&li&13&/li&&li&14&/li&&li&15&/li&&li&16&/li&&li&17&/li&&li&18&/li&&li&19&/li&&li&20&/li&&li&21&/li&&li&22&/li&&li&23&/li&&li&24&/li&&li&25&/li&&li&26&/li&&li&27&/li&&li&28&/li&&li&29&/li&&li&30&/li&&li&31&/li&&li&32&/li&&li&33&/li&&li&34&/li&&li&35&/li&&li&36&/li&&li&37&/li&&li&38&/li&&li&39&/li&&li&40&/li&&li&41&/li&&li&42&/li&&li&43&/li&&li&44&/li&&li&45&/li&&li&46&/li&&li&47&/li&&li&48&/li&&li&49&/li&&li&50&/li&&li&51&/li&&li&52&/li&&li&53&/li&&li&54&/li&&li&55&/li&&li&56&/li&&li&57&/li&&li&58&/li&&li&59&/li&&li&60&/li&&li&61&/li&&li&62&/li&&li&63&/li&&li&64&/li&&li&65&/li&&li&66&/li&&li&67&/li&&li&68&/li&&li&69&/li&&li&70&/li&&li&71&/li&&/ul&&div
class=&save_code tracking-ad& data-mod=&popu_249&&&a href=&javascript:;& target=&_blank&&&img src=&http://static.blog.csdn.net/images/save_snippets.png&&&/a&&/div&&/pre&
&li&&strong&代码使用与结果&/strong&&/li&
&p&代码放在我github的机器学习仓库里:&a href=&/wepe/MachineLearning& target=&_blank&&/wepe/MachineLearning&/a&,非github用户直接点右下的DownloadZip。&/p&
&p&在/DeepLearning Tutorials/keras_usage目录下包括&code&data.py&/code&,&code&cnn.py&/code&两份代码,下载Mnist数据后解压到该目录下,运行&code&cnn.py&/code&这份文件即可。&/p&
&p&结果如下所示,在Epoch 9达到了0.98的训练集识别率和0.97的验证集识别率:&/p&
&p&&img src=&http://img.blog.csdn.net/44640& alt=&这里写图片描述& title=&&&&/p&
&p&转载请注明出处:&a href=&http://blog.csdn.net/u/article/details/& target=&_blank&&http://blog.csdn.net/u/article/details/&/a&&/p&&/div&
& & & & &script type=&text/javascript&&
& & & & & & $(function () {
& & & & & & & & $('pre.prettyprint code').each(function () {
& & & & & & & & & & var lines = $(this).text().split('\n').
& & & & & & & & & & var $numbering = $('&ul/&').addClass('pre-numbering').hide();
& & & & & & & & & & $(this).addClass('has-numbering').parent().append($numbering);
& & & & & & & & & & for (i = 1; i &= i++) {
& & & & & & & & & & & & $numbering.append($('&li/&').text(i));
& & & & & & & & & & };
& & & & & & & & & & $numbering.fadeIn(1700);
& & & & & & & & });
& & & & & & });
& & & & &/script&
&!-- Baidu Button BEGIN --&
&div class=&bdsharebuttonbox tracking-ad bdshare-button-style0-16& style=&float:& data-mod=&popu_172& data-bd-bind=&0&&
&a href=&#& class=&bds_more& data-cmd=&more& style=&background-position:0 0 ! background-image: url(http://bdimg./static/api/img/share/icons_0_16.png?v=d754dcc0.png) !important& target=&_blank&&&/a&
&a href=&#& class=&bds_qzone& data-cmd=&qzone& title=&分享到QQ空间& style=&background-position:0 -52px !important& target=&_blank&&&/a&
&a href=&#& class=&bds_tsina& data-cmd=&tsina& title=&分享到新浪微博& style=&background-position:0 -104px !important& target=&_blank&&&/a&
&a href=&#& class=&bds_tqq& data-cmd=&tqq& title=&分享到腾讯微博& style=&background-position:0 -260px !important& target=&_blank&&&/a&
&a href=&#& class=&bds_renren& data-cmd=&renren& title=&分享到人人网& style=&background-position:0 -208px !important& target=&_blank&&&/a&
&a href=&#& class=&bds_weixin& data-cmd=&weixin& title=&分享到微信& style=&background-position:0 -1612px !important& target=&_blank&&&/a&
&script&window._bd_share_config = { &common&: { &bdSnsKey&: {}, &bdText&: &&, &bdMini&: &1&, &bdMiniList&: false, &bdPic&: &&, &bdStyle&: &0&, &bdSize&: &16& }, &share&: {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src
= 'http://bdimg./static/api/js/share.js?v=.js?cdnversion=' + ~(-new Date() / 36e5)];&/script&
&!-- Baidu Button END --&
&!--172.16.140.13--&
&!-- Baidu Button BEGIN --&
&script type=&text/javascript& id=&bdshare_js& data=&type=tools&uid=1536434& src=&http://bdimg./static/js/bds_s_v2.js?cdnversion=418380&&&/script&
&script type=&text/javascript&&
& & document.getElementById(&bdshell_js&).src = &http://bdimg./static/js/shell_v2.js?cdnversion=& + Math.ceil(new Date()/3600000)
&!-- Baidu Button END --&
& & & & &div id=&digg& articleid=&&&
& & & & & & &dl id=&btnDigg& class=&digg digg_enable& onclick=&btndigga();&&
& & & & & & & &
& & & & & & & & &&dt&顶&/dt&
& & & & & & & & &dd&14&/dd&
& & & & & & &/dl&
& & & & & &
& & & & & & &&
& & & & & & &dl id=&btnBury& class=&digg digg_enable& onclick=&btnburya();&&
& & & & & & &&
& & & & & & & & & &dt&踩&/dt&
& & & & & & & & &dd&0&/dd& & & & & & & &&
& & & & & & &/dl&
& & & & & &&
& & & & &/div&
& & &&div class=&tracking-ad& data-mod=&popu_222&&&a href=&javascript:void(0);& target=&_blank&&&&/a& & &/div&
& & &div class=&tracking-ad& data-mod=&popu_223&& &a href=&javascript:void(0);& target=&_blank&&&&/a&&/div&
& & &script type=&text/javascript&&
& & & & function btndigga() {
& & & & & & $(&.tracking-ad[data-mod='popu_222'] a&).click();
& & & & function btnburya() {
& & & & & & $(&.tracking-ad[data-mod='popu_223'] a&).click();
& & & & & & &/script&
& &&ul class=&article_next_prev&&
& & & & & & & & &li class=&prev_article&&&span onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian']);location.href='http://blog.csdn.net/u/article/details/';&&上一篇&/span&&a href=&http://blog.csdn.net/u/article/details/&
onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian'])&&libsvm和liblinear的使用总结&/a&&/li&
& & & & & & & & &li class=&next_article&&&span onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian']);location.href='http://blog.csdn.net/u/article/details/';&&下一篇&/span&&a href=&http://blog.csdn.net/u/article/details/&
onclick=&_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian'])&&DeepLearning tutorial(7)深度学习框架Keras的使用-进阶&/a&&/li&
& & &div style=&clear: height:10&&&/div&
& & & & & & &div class=&similar_article&&
& & & & & & & & & & &h4&&/h4&
& & & & & & & & & & &div class=&similar_c& style=&margin:20px 0px 0px 0px&&
& & & & & & & & & & & & &div class=&similar_c_t&&
& & & & & & & & & & & & & &&相关文章推荐
& & & & & & & & & & & & &/div&
& & & & & & & & & &
& & & & & & & & & & & & &div class=&similar_wrap tracking-ad& data-mod=&popu_36& style=&max-height:250px&& & & & & & & & & & & &&
& & & & & & & & & & & & & & &ul class=&similar_list fl&& & &
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/niuwei22007/article/details/& title=&基于Theano的深度学习(Deep Learning)框架Keras学习随笔-08-规则化(规格化)& strategy=&BlogCommendFromBaidu_0& target=&_blank&&基于Theano的深度学习(Deep Learning)框架Keras学习随笔-08-规则化(规格化)&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/huiyiCourse/series_detail/64?utm_source=blog7& title=&携程机票大数据基础平台架构演进-- 许鹏& strategy=&undefined& target=&_blank&&携程机票大数据基础平台架构演进-- 许鹏&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/niuwei22007/article/details/& title=&基于Theano的深度学习(Deep Learning)框架Keras学习随笔-12-核心层& strategy=&BlogCommendFromBaidu_1& target=&_blank&&基于Theano的深度学习(Deep Learning)框架Keras学习随笔-12-核心层&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/course/detail/4803?utm_source=blog7& title=&Python可以这样学--董付国& strategy=&undefined& target=&_blank&&Python可以这样学--董付国&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/eagelangel/article/details/& title=&用keras小试CNN卷积神经网络应用于人脸识别& strategy=&BlogCommendFromBaidu_2& target=&_blank&&用keras小试CNN卷积神经网络应用于人脸识别&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/course/detail/5505?utm_source=blog7& title=&一步一步学Spring Boot& strategy=&undefined& target=&_blank&&一步一步学Spring Boot&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/u/article/details/& title=&DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)& strategy=&BlogCommendFromBaidu_3& target=&_blank&&DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/course/detail/4637?utm_source=blog7& title=&深入浅出C++程序设计& strategy=&undefined& target=&_blank&&深入浅出C++程序设计&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & &/ul&
& & & & & & & & & & & & & & & &ul class=&similar_list fr&& & & &
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/u/article/details/& title=&DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解& strategy=&BlogCommendFromBaidu_4& target=&_blank&&DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/course/detail/4363?utm_source=blog7& title=&Android Material Design 新控件& strategy=&undefined& target=&_blank&&Android Material Design 新控件&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/lujiandong1/article/details/& title=&keras 实现CNN 进行手写字符识别& strategy=&BlogCommendFromBaidu_5& target=&_blank&&keras 实现CNN 进行手写字符识别&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://edu.csdn.net/combo/detail/532?utm_source=blog7& title=&机器学习需要用到的数学知识& strategy=&undefined& target=&_blank&&机器学习需要用到的数学知识&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/zhoubl668/article/details/& title=&DeepLearning tutorial(6)易用的深度学习框架Keras简介& strategy=&BlogCommendFromBaidu_6& target=&_blank&&DeepLearning tutorial(6)易用的深度学习框架Keras简介&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/zrf/article/details/& title=&activity嵌套fragment,fragment内嵌fragment之间传值切换fragment& strategy=&BlogCommendFromBaidu_7& target=&_blank&&activity嵌套fragment,fragment内嵌fragment之间传值切换fragment&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/Eric_Wilson/article/details/& title=&Keras 深度学习框架Python Example:CNN/mnist& strategy=&BlogCommendFromBaidu_8& target=&_blank&&Keras 深度学习框架Python Example:CNN/mnist&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & & & & &&li&
& & & & & & & & & & & & & & & & & & & &&em&o&/em&
& & & & & & & & & & & & & & & & & & & &&a href=&http://blog.csdn.net/u/article/details/& title=&利用Python PIL、cPickle读取和保存图像数据库& strategy=&BlogCommendFromBaidu_9& target=&_blank&&利用Python PIL、cPickle读取和保存图像数据库&/a&
& & & & & & & & & & & & & & & & & &&/li&
& & & & & & & & & & & & & & &/ul&
& & & & & & & & & & & & &/div&
& & & & & & & & & & &/div&
& & & & & & & & &/div& &&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:60次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 keras框架 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信