先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行(需要64bit,vs c++2015),所以自己装了一个双系统。这才感到linux系统的强大之初,难怪大公司都是用这个做开发,妹的,谁用谁知道啊!!!! 
   先来介绍一下这个框架:我们都知道深度的神经网络,python一开始有theano这个框架用来写神经网络,不过后来我们发现keras这个比theano更加容易构建,很适合初学者。×..× 
   以下是对应的英文网站:http://keras.io/#installation,英文好的话自己都可以看懂了。

一:先看安装

有两种: 
1.ubuntu下直接用 sudo pip install keras 安装 
2.又或者先安装以下的依赖项:

numpy, scipy
pyyaml
Theano
HDF5 and h5py

Once you have the dependencies installed, clone the repo:

git clone https://github.com/fchollet/keras.git

二.模块简介

1.optimizers: 
这个是用来选用优化方法的,里面有SGD,Adagrad,Adadelta,RMSprop,Adam可选

2.objectives 这个定义了用什么形式的误差来优化,有 
mean_squared_error / mse:平均方差 
mean_absolute_error / mae:绝对误差 
mean_absolute_percentage_error / mape:平均绝对百分差 
mean_squared_logarithmic_error / msle:对数误差 
squared_hinge 
hinge 
binary_crossentropy: Also known as logloss. 
categorical_crossentropy:使用这个目标函数需要设置label为二进制数组的形式。

3.model 
model = keras.models.Sequential() 初始化一个神经网络 
add 添加一层神经网 
compile(optimizer, loss, class_mode=”categorical”): 
参数: 
optimizer: str (优化函数的名称) 或者优化对象.参考 optimizers. 
loss: str (目标函数的名称) 或者目标函数. 参考 objectives. 
class_mode: 值为”categorical”, “binary”. 用于计算分类正确率或调用 predict_classes方法. 
theano_mode: A theano.compile.mode.Mode (reference). 
fit(X, y, batch_size=128, nb_epoch=100, verbose=1, validation_split=0., validation_data =None, shuffle=True, show_accuracy=False): 固定的 epochs训练一个模型. 
返回值:记录在字典中的训练成功的损失值,也可是验证损失值或精确度(适用的话). 
参数: 
X: data. 
y: labels. 
batch_size: int. 每一次迭代的样本数目. 
nb_epoch: int. 
verbose: 0 表示不更新日志, 1 更新日志, 2 每个epoch一个进度行. 
validation_split: float (0 < x < 1).验证集的一部分. 
validation_data: tuple (X, y) 数据作为验证集. 将加载validation_split. 
shuffle: boolean. 每个 epoch是否随机抽取样本. 
show_accuracy: boolean. 每个epoch是否显示分类正确率. 
evaluate(X, y, batch_size=128, show_accuracy=False, verbose=1): 通过验证集的数据显示model的性能. 
Return: 返回数据的损失值. 
Arguments: 和上面fit函数定义相同. verbose用作二进制标识(进度条或无). 
predict(X, batch_size=128, verbose=1): 
Return: 测试数据的预测数组. 
Arguments: 和fit一样. 
predict_classes(X, batch_size=128, verbose=1): 返回test data的类预测数组. 
Return: 测试数据的标签数组. 
Arguments: 和fit一样. 
train(X, y, accuracy=False): 一个batch的梯度更新. if accuracy==False, return tuple (loss_on_batch, accuracy_on_batch). Else, return loss_on_batch. 
Return: 损失值, 或者tuple (loss, accuracy) if accuracy=True. 
test(X, y, accuracy=False): 一个batch的性能计算. if accuracy==False, return tuple (loss_on_batch, accuracy_on_batch). Else, return loss_on_batch. 
Return: 损失值, 或 tuple (loss, accuracy) if accuracy=True. 
save_weights(fname):保存所有层的权值到HDF5文件中. 
load_weights(fname): 加载保存在save_weights中模型权值. 只能加载相同结构的文件.

下面是自己写的一个小程序

#coding:utf-8
'''
Created on 2015-9-12
@author: zzq2015
'''
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
import scipy.io as sio
import numpy as np model = Sequential()
model.add(Dense(4, 200, init='uniform'))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(200, 100, init='uniform'))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(100, 50, init='uniform'))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(50, 20, init='uniform'))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(20, 3, init='uniform'))
model.add(Activation('softmax')) model.compile(loss='binary_crossentropy', optimizer='adam', class_mode="binary") matfn=u'/media/zzq2015/学习/python/da/kerasTrain.mat'
data=sio.loadmat(matfn)
data = np.array(data.get('iris_train'))
trainDa = data[:80,:4]
trainBl = data[:80,4:]
testDa = data[80:,:4]
testBl = data[80:,4:] model.fit(trainDa, trainBl, nb_epoch=80, batch_size=20)
print model.evaluate(testDa, testBl, show_accuracy=True)
print model.predict_classes(testDa)
print '真实标签:\n'
print testBl

输出结果如下:

Epoch 79

20/80 [======>.......................] - ETA: 0s - loss: 0.1042
40/80 [==============>...............] - ETA: 0s - loss: 0.0857
60/80 [=====================>........] - ETA: 0s - loss: 0.0826
80/80 [==============================] - 0s - loss: 0.1216 10/10 [==============================] - 0s
[0.15986641560148043, 1.0] 10/10 [==============================] - 0s
[[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]
[0 0 1]]
真实标签: [[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]
[ 0. 0. 1.]]

0.15是损失值,1是准确率

 
 zhuan zai :http://blog.csdn.net/star_bob/article/details/48598417#comments

python keras 神经网络框架 的使用以及实例的更多相关文章

  1. 【转】基于Python的接口测试框架实例

    下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   背景 最近公司在做消息推送,那么自然就会产生很多接口,测试 ...

  2. 深层神经网络框架的python实现

    概述 本文demo非常适合入门AI与深度学习的同学,从最基础的知识讲起,只要有一点点的高等数学.统计学.矩阵的相关知识,相信大家完全可以看明白.程序的编写不借助任何第三方的深度学习库,从最底层写起. ...

  3. 基于Python的接口测试框架实例

    文章来源:http://www.jb51.net/article/96481.htm 下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. ...

  4. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

  5. Python开源机器学习框架:Scikit-learn六大功能,安装和运行Scikit-learn

    Python开源机器学习框架:Scikit-learn入门指南. Scikit-learn的六大功能 Scikit-learn的基本功能主要被分为六大部分:分类,回归,聚类,数据降维,模型选择和数据预 ...

  6. 7大python 深度学习框架的描述及优缺点绍

    Theano https://github.com/Theano/Theano 描述: Theano 是一个python库, 允许你定义, 优化并且有效地评估涉及到多维数组的数学表达式. 它与GPUs ...

  7. python 实现web框架simfish

    python 实现web框架simfish 本文主要记录本人利用python实现web框架simfish的过程.源码github地址:simfish WSGI HTTP Server wsgi模块提供 ...

  8. Caffe(卷积神经网络框架)介绍

    Caffe(卷积神经网络框架)Caffe,全称Convolution Architecture For Feature Extraction caffe是一个清晰,可读性高,快速的深度学习框架.作者是 ...

  9. Python之Web框架们

    Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...

随机推荐

  1. 【java】详解java中的注解(Annotation)

    目录结构: contents structure [+] 什么是注解 为什么要使用注解 基本语法 4种基本元注解 重复注解 使用注解 运行时处理的注解 编译时处理的注解 1.什么是注解 用一个词就可以 ...

  2. html5 ajax 文件上传

    http://html5demos.com/dnd-upload 看这个例子看了一会儿...这个是支持拖拽的上传. 下面代码是一个简单的ajax的文件上传: function match(url,rs ...

  3. SmartUpload类实现上传和下载

    实现文件的上传与下载,可以使用Java的I/O流的类来实现,也可以使用专业的上传.下载组件.这些组件提供了现成的类,程序员只需调用这些类中的方法即可实现文件的上传与下载.本章将向读者介绍如何应用jsp ...

  4. PHP基本的语法以及和Java的差别

    .表示字符串相加 ->同Java中的. $作为变量的前缀,除此之外.变量名称定义规则同Java 參数传递和方法返回时传引用须要加前缀& 演示样例代码: function f(&$ ...

  5. 一段js代码

    原文地址 [].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math ...

  6. Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法

    为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shell脚本,当达到一定值得时候,发送邮件通知.需要用到Crontab的定时任务去执行这个脚本,但是发现通过命令(./test.sh)执 ...

  7. 一个Demo带你彻底掌握View的滑动冲突

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 近期在又一次学习Android自己定义View这一块的内容.遇到了平时开发中常常碰到的一个棘手问题:View的滑 ...

  8. stm8 I/O口模式配置

    复位后的默认配置 :复位之后,所有的引脚都是悬浮输入模式. However, a few pins may have a different behavior. Refer to the datash ...

  9. shell curl 下载图片并另存为(重命名)

    curl -o fuck.png http://img30.360buyimg.com/imgzone/jfs/t19711/232/1837927836/150222/e4cd87bb/5ad990 ...

  10. Vue 动态组件、动画、插件

    1 动态组件 ①简单来说: 就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. ②动态切换: 在挂载点使用component标签,然后使用v-bind:is=”组件名 ...