博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python keras 神经网络框架 的使用以及实例
阅读量:6581 次
发布时间:2019-06-24

本文共 4254 字,大约阅读时间需要 14 分钟。

先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行(需要64bit,vs c++2015),所以自己装了一个双系统。这才感到linux系统的强大之初,难怪大公司都是用这个做开发,妹的,谁用谁知道啊!!!! 

   先来介绍一下这个框架:我们都知道深度的神经网络,python一开始有theano这个框架用来写神经网络,不过后来我们发现keras这个比theano更加容易构建,很适合初学者。×..× 
   以下是对应的英文网站:,英文好的话自己都可以看懂了。

一:先看安装

有两种: 

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

numpy, scipypyyamlTheanoHDF5 and h5py

Once you have the dependencies installed, clone the repo:

git clone 

二.模块简介

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 Sequentialfrom 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 7920/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
你可能感兴趣的文章
[摘录]调动员工积极性的七个关键
查看>>
.htaccess 基础教程(四)Apache RewriteCond 规则参数
查看>>
Android控件之HorizontalScrollView 去掉滚动条
查看>>
UVM中的class--2
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
root用户重置其他密码
查看>>
Oracle推断值为非数字
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>
使用模板将Web服务的结果转换为标记语言
查看>>
inno setup 打包脚本学习
查看>>
php 并发控制中的独占锁
查看>>
React Native 0.20官方入门教程
查看>>
JSON for Modern C++ 3.6.0 发布
查看>>
Tomcat9.0部署iot.war(环境mysql8.0,centos7.2)
查看>>
我的友情链接
查看>>