python神经网络学习 使用Keras进行简单分类


Posted in Python onMay 04, 2022

学习前言

上一步讲了如何构建回归算法,这一次将怎么进行简单分类。

Keras中分类的重要函数

1、np_utils.to_categorical

np_utils.to_categorical用于将标签转化为形如(nb_samples, nb_classes)的二值序列。

假设num_classes = 10。

如将[1,2,3,……4]转化成:

[[0,1,0,0,0,0,0,0]
[0,0,1,0,0,0,0,0]
[0,0,0,1,0,0,0,0]
……
[0,0,0,0,1,0,0,0]]

这样的形态。

如将Y_train转化为二值序列,可以用如下方式:

Y_train = np_utils.to_categorical(Y_train,num_classes= 10)

2、Activation

Activation是激活函数,一般在每一层的输出使用。

当我们使用Sequential模型构建函数的时候,只需要在每一层Dense后面添加Activation就可以了。

Sequential函数也支持直接在参数中完成所有层的构建,使用方法如下。

model = Sequential([
    Dense(32,input_dim = 784),
    Activation("relu"),
    Dense(10),
    Activation("softmax")
    ]
)

其中两次Activation分别使用了relu函数和softmax函数。

3、metrics=[‘accuracy’]

在model.compile中添加metrics=[‘accuracy’]表示需要计算分类精确度,具体使用方式如下:

model.compile(
	loss = 'categorical_crossentropy',
	optimizer = rmsprop,
	metrics=['accuracy']
)

全部代码

这是一个简单的仅含有一个隐含层的神经网络,用于完成手写体识别。在本例中,使用的优化器是RMSprop,具体可以使用的优化器可以参照Keras中文文档

import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Activation ## 全连接层
from keras.datasets import mnist
from keras.utils import np_utils
from keras.optimizers import RMSprop
# 获取训练集
(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
# 首先进行标准化 
X_train = X_train.reshape(X_train.shape[0],-1)/255
X_test = X_test.reshape(X_test.shape[0],-1)/255
# 计算categorical_crossentropy需要对分类结果进行categorical
# 即需要将标签转化为形如(nb_samples, nb_classes)的二值序列
Y_train = np_utils.to_categorical(Y_train,num_classes= 10)
Y_test = np_utils.to_categorical(Y_test,num_classes= 10)
# 构建模型
model = Sequential([
    Dense(32,input_dim = 784),
    Activation("relu"),
    Dense(10),
    Activation("softmax")
    ]
)
rmsprop = RMSprop(lr = 0.001,rho = 0.9,epsilon = 1e-08,decay = 0)
## compile
model.compile(loss = 'categorical_crossentropy',optimizer = rmsprop,metrics=['accuracy'])
print("\ntraining")
cost = model.fit(X_train,Y_train,nb_epoch = 2,batch_size = 32)
print("\nTest")
cost,accuracy = model.evaluate(X_test,Y_test)
## W,b = model.layers[0].get_weights()
print("accuracy:",accuracy)

实验结果为:

Epoch 1/2
60000/60000 [==============================] - 12s 202us/step - loss: 0.3512 - acc: 0.9022
Epoch 2/2
60000/60000 [==============================] - 11s 183us/step - loss: 0.2037 - acc: 0.9419
Test
10000/10000 [==============================] - 1s 108us/step
accuracy: 0.9464

以上就是python神经网络学习使用Keras进行简单分类的详细内容!


Tags in this post...

Python 相关文章推荐
Python中zip()函数用法实例教程
Jul 31 Python
Python open()文件处理使用介绍
Nov 30 Python
详解Python中的type()方法的使用
May 21 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
python Pygame的具体使用讲解
Nov 03 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
使用requests库制作Python爬虫
Mar 25 Python
python调用webservice接口的实现
Jul 12 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 #Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 #Python
python开发制作好看的时钟效果
关于的python五子棋的算法
python开发人人对战的五子棋小游戏
python pygame 开发五子棋双人对弈
May 02 #Python
Python开发简易五子棋小游戏
May 02 #Python
You might like
PHP json_decode函数详细解析
2014/02/17 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
js实现搜索栏效果
2018/11/16 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
Python中的日期时间处理详解
2016/11/17 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
django foreignkey(外键)的实现
2019/07/29 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
陈欧的广告词
2014/03/18 职场文书
体育运动会广播稿
2014/10/05 职场文书
财务会计实训报告
2014/11/05 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
小学六一主持词开场白
2015/05/28 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Flink 侧流输出源码示例解析
2022/09/23 Servers