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爬虫之爬虫的定义及URL构成
Nov 04 Python
Python实现的多线程http压力测试代码
Feb 08 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
django+tornado实现实时查看远程日志的方法
Aug 12 Python
python内存管理机制原理详解
Aug 12 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python列表如何更新值
May 27 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
Python页面加载的等待方式总结
Feb 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
js读取cookie方法总结
2014/10/31 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
数组越界问题
2015/10/21 面试题
秋季运动会加油稿200字
2014/01/11 职场文书
合作经营协议书
2014/04/17 职场文书
论文指导教师评语
2014/04/28 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
2016继续教育研修日志
2015/11/13 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers