莫凡Python 2

kearsregressionpython

Classifier 分类

使用 mnist 数据集,这是0-9的图片数据,我们使用神经网络去识别这些图片。显示图片上的数据

本质上是使用神经网络去分类。

参考资料

https://morvanzhou.github.io/tutorials/machine-learning/keras/2-2-classifier/

数据预处理、熟悉数据

# -*- coding: utf-8 -*-
""" Classifier 分类 """
from keras.datasets import mnist
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
# %% 数据处理、感受数据
(X_train, Y_train), (X_test, Y_test) = mnist.load_data() for num in range(50):
plt.imshow(X_train[num,:,:],cmap='Greys_r')
plt.axis('off')
plt.show()

图片显示

既然是图片数据集,我们可以通过显示图片来直接的了解这个数据集

X_train 是600002828 的矩阵,是一个灰度图像矩阵,6000张图片,图片大小为28*28

Y_trian 是 60000*1 的一维数组


数字5

数字9

数字3

关键

  • reshape()的使用

参考博客

数据处理

将图片数据变为 6000*784 的矩阵,也就是新矩阵的一行代表一幅图片 使用 reshape

将标签数据化为 one_hot 使用函数 np_utils.to_categorical

参考博客

模型搭建

导入的包

""" Classifier 分类 """
from keras.datasets import mnist
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import numpy as np
np.random.seed(1337) # for reproducibility
from keras.models import Sequential
from keras.layers import Dense, Activation
import matplotlib.pyplot as plt
from keras.utils import np_utils
from keras.optimizers import RMSprop

建立模型

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.0)

注意

Activation(‘softmax’) 其中softmax多用于分类问题,在是输出层中使用,输出一个类别的可能概率矩阵

RMSprop函数中:

  • lr 为学习率

参考连接

https://keras-cn.readthedocs.io/en/latest/legacy/other/optimizers/

编译模型

model.compile(optimizer=rmsprop,loss=‘categorical_crossentropy’,metrics=[‘accuracy’])

说明


关于metrics

训练模型

model.fit(X_train,Y_train,epochs=2,batch_size=32)

模型评估

loss,accuracy = model.evaluate(X_test,Y_test)

  • loss 误差 目标值 0
  • accuracy 准确率 目标值 100%

模型检验

主要通过model.predict() 函数,使用训练好的神经网络,输出对 测试集 中第一章图片 img_0的预测

X_predict = X_test[:10,:]
X_predict = X_predict.reshape(10,28,28)
plt.imshow(X_predict[0,:,:],cmap='Greys_r')
plt.axis('off')
plt.show()
img_0 = X_test[0,:].reshape(1,784)
result = np.argmax(model.predict(img_0))
print(result)

关键

model.predict() 返回值


enter description here

输出一个1*10的矩阵,分别对应图片上数字为0-9的可能性。

这张图片对应的数字的最大可能性,就是该矩阵最大值对饮的下标

获取array的最大值

参考

结果

图片为:



预测为:

莫凡Python之keras 2的更多相关文章

  1. How to Grid Search Hyperparameters for Deep Learning Models in Python With Keras

    Hyperparameter optimization is a big part of deep learning. The reason is that neural networks are n ...

  2. win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总

    win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总 2019-09-20 15:06:03 wyx100 阅读数 38更多 分类专栏: M ...

  3. 【Python】keras神经网络识别mnist

    上次用Matlab写过一个识别Mnist的神经网络,地址在:https://www.cnblogs.com/tiandsp/p/9042908.html 这次又用Keras做了一个差不多的,毕竟,现在 ...

  4. 在ubuntu安装python, theano, keras , Spearmint, Mongodb

    系统配置: Ubuntu 14 (其他系统也差不多如下操作) 1. 通过anaconda安装 python 地址: https://www.continuum.io/downloads#linux 2 ...

  5. win7上python+theano+keras安装

    https://blog.csdn.net/yongjiankuang/article/details/50485610 其实过程很简单,首先说一下安装条件: 1.win7 (32和64都可以,下载安 ...

  6. 【Python】keras使用LSTM拟合曲线

    keras生成的网络结构如下图: 代码如下: from sklearn.preprocessing import MinMaxScaler from keras.models import Seque ...

  7. 【Python】keras使用Lenet5识别mnist

    原始论文中的网络结构如下图: keras生成的网络结构如下图: 代码如下: import numpy as np from keras.preprocessing import image from ...

  8. 【Python】keras卷积神经网络识别mnist

    卷积神经网络的结构我随意设了一个. 结构大概是下面这个样子: 代码如下: import numpy as np from keras.preprocessing import image from k ...

  9. python tensorflow keras

    pip install tensorflow pip install keras pip install theano http://www.open-open.com/lib/view/open14 ...

  10. 好书推荐计划:Keras之父作品《Python 深度学习》

    大家好,我禅师的助理兼人工智能排版住手助手条子.可能非常多人都不知道我.由于我真的难得露面一次,天天给禅师做底层工作. wx_fmt=jpeg" alt="640? wx_fmt= ...

随机推荐

  1. 教你如何自己搭环境部署华为FusionCompute虚拟化系统

    https://www.bilibili.com/video/BV1iy4y177f4?p=10 实用的干货快先码起来,说不定以后会用到哟

  2. 用python从网页下载单词库

    从网站下载单词库 1 每一页有几百个单词 2 每一个单词有独立的URL,URL中包含单词的中文解释 3 使用的库 requests,pyquery,web #coding:utf-8 import r ...

  3. 有道翻译-JS逆向-api调用

    简单方法 -调用开源api 这个比较简单四行代码就可以搞定,先放代码: 1 import requests 2 while True: 3 input_data = input('请输入你要翻译的数据 ...

  4. flutter 常用ui库

    1,EasyRefresh实现listview上拉刷新下拉加载,添加头尾布局,以及加载样式 地址:https://pub.flutter-io.cn/packages/flutter_easyrefr ...

  5. Django初识(一)

    一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的设计模式,即模型M,视图V和模版T 1.框架介绍 具体介绍Django之前,必须先介绍Web框架的 ...

  6. jmeter分布式配置及问题记录

    环境配置:   假设有2台电脑,主机(10.1.5.219),从机(10.1.5.212) 主机:jdk.jmeter.脚本.脚本所需的文件(需配置jdk和jmeter的环境变量) 从机:jdk.jm ...

  7. 12-K8S之调度器、预选策略和优选函数

    目录 调度器.预选策略和优选函数 1.nodeSelector nodeName调度: 2.节点亲和性调度(pod亲和于node节点) 3.pod亲和度调度(pod亲和于pod) 4.pod反亲和性度 ...

  8. Winform帮助文档(C#打开chm定位到特定页面)国内最全总结写法。原文文档带翻译

    下面比较啰嗦,只一句即可:Help.ShowHelp(null,"C:\help.hcm", HelpNavigator.Topic,"index.htm")方 ...

  9. oracle学习之索引的介绍

    在关系型数据库中,用户查找数据与行的物理位置无关紧要.为了能够找到数据,表中的每一行均用一个rowid来标识,rowid能够标识数据库中某一行的具体位置.当Oracle数据库中存储海量的记录时,就意味 ...

  10. UML各种图实践题

    1. 用状态图描述一部电梯的运行