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中zip和unzip数据的方法
May 27 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
python读取oracle函数返回值
Jul 18 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
Python理解递归的方法总结
Jan 28 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
Python argparse模块使用方法解析
Feb 20 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 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
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
js中this用法实例详解
2015/05/05 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python中正则表达式详解
2017/05/17 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Django choices下拉列表绑定实例
2020/03/13 Python
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
SQL Server笔试题
2012/01/10 面试题
说明书范文
2014/05/07 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
李强为自己工作观后感
2015/06/11 职场文书
法定代表人资格证明书
2015/06/18 职场文书
优秀员工演讲稿
2019/06/21 职场文书