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常用模块介绍
Nov 21 Python
python实现数组插入新元素的方法
May 22 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
Python 多线程实例详解
Mar 25 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
python机器人行走步数问题的解决
Jan 29 Python
Python中的默认参数实例分析
Jan 29 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 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
第二节 对象模型 [2]
2006/10/09 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
python调用fortran模块
2016/04/08 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
关于python中的xpath解析定位
2020/03/06 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
使用python实现学生信息管理系统
2021/02/25 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
婚礼答谢词
2015/01/04 职场文书
初一英语教学反思
2016/02/15 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
Java 数组的使用
2022/05/11 Java/Android