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 相关文章推荐
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
用pickle存储Python的原生对象方法
Apr 28 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
深入浅析Python的类
Jun 22 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
利用nohup来开启python文件的方法
Jan 14 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
python爬取招聘要求等信息实例
Nov 20 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
Python 数据科学 Matplotlib图库详解
Jul 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
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
php实现文件上传基本验证
2020/03/04 PHP
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python 列表list使用介绍
2014/11/30 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
python实现简单银行管理系统
2019/10/25 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
岗位职责怎么写
2014/03/14 职场文书
群众路线对照检查材料
2014/09/22 职场文书
邀请函怎么写
2015/01/30 职场文书
朋友离别感言
2015/08/04 职场文书
详解python的异常捕获
2022/03/03 Python