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的dict,set,list,tuple应用详解
Jul 24 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
Python 统计字数的思路详解
May 08 Python
TensorFlow实现卷积神经网络
May 24 Python
python 字典修改键(key)的几种方法
Aug 10 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
Python字符串的修改方法实例
Dec 19 Python
python with语句的原理与用法详解
Mar 30 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Python执行时间的几种计算方法
Jul 31 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 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 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
Prototype Array对象 学习
2009/07/19 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Form表单及django的form表单的补充
2019/07/25 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
如何使用python写截屏小工具
2020/09/29 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
主治医师岗位职责
2013/12/10 职场文书
毕业证丢失证明
2014/01/15 职场文书
黄金酒广告词
2014/03/21 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
临时用工协议书范本
2014/10/29 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
公司会议开幕词
2015/01/29 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android