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实现抖音视频批量下载
Jun 20 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Python求均值,方差,标准差的实例
Jun 29 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Python telnet登陆功能实现代码
Apr 16 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
一个入门级python爬虫教程详解
Jan 27 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
Python 中的 copy()和deepcopy()
Nov 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
PHPlet在Windows下的安装
2006/10/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python OS模块实例详解
2019/04/15 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
自动化专业本科毕业生求职信
2013/10/20 职场文书
会计主管岗位职责范文
2013/11/08 职场文书
人事经理岗位职责
2014/04/28 职场文书