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 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
详解Python3的TFTP文件传输
Jun 26 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
python getpass实现密文实例详解
Sep 24 Python
Python如何计算语句执行时间
Nov 22 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 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
js下函数般调用正则的方法附代码
2008/06/22 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
php无序树实现方法
2015/07/28 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
python中实现定制类的特殊方法总结
2014/09/28 Python
Python调用C++程序的方法详解
2017/01/24 Python
python批量修改文件编码格式的方法
2018/05/31 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
写出二分查找算法的两种实现
2013/05/13 面试题
广告语设计及教案
2014/03/21 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL