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 相关文章推荐
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python截取两个单词之间的内容方法
Dec 25 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
python实现BP神经网络回归预测模型
Aug 09 Python
python对验证码降噪的实现示例代码
Nov 12 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
tensorflow 环境变量设置方式
Feb 06 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
Python实现仓库管理系统
May 30 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
根德YB400的电路分析
2021/03/02 无线电
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
浅析vue深复制
2018/01/29 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
理论讲解python多进程并发编程
2018/02/09 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
appium+python adb常用命令分享
2020/03/06 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
耐克亚太地区:Nike APAC
2019/12/07 全球购物
SQL数据库笔试题
2016/03/08 面试题
个人找工作自荐信格式
2013/09/21 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
服务理念标语
2014/06/18 职场文书
医院党员公开承诺书
2014/08/30 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
婚礼新人答谢词
2015/01/04 职场文书
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python