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读写excel的方法
Nov 18 Python
Python读写文件方法总结
Jun 09 Python
python的keyword模块用法实例分析
Jun 30 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
pytorch 归一化与反归一化实例
Dec 31 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Python基础之数据类型知识汇总
May 18 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php 高性能书写
2010/12/11 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
python如何建立全零数组
2020/07/19 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
旷课检讨书3000字
2014/02/04 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
卖车协议书范文
2016/03/23 职场文书