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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
python模块之re正则表达式详解
Feb 03 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
详解Python实现进度条的4种方式
Jan 15 Python
Python使用多进程运行含有任意个参数的函数
May 02 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
python实现猜拳游戏项目
Nov 30 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
PDO::errorCode讲解
2019/01/28 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
基于jquery的表格排序
2010/09/11 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
纯JS实现轮播图
2017/02/22 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python实现扫雷游戏的示例
2020/10/20 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
MADE法国:提供原创设计师家具
2018/09/18 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
物流管理毕业生自荐信
2013/10/24 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
工程技术员岗位职责
2014/03/02 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
高中军训的心得体会
2014/09/01 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫