莫凡Python之keras 2
莫凡Python 2
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 的一维数组
关键
- reshape()的使用
参考博客
- https://www.cnblogs.com/yinxiangnan-charles/p/5928689.html
- https://blog.csdn.net/sinat_34474705/article/details/74458605
数据处理
将图片数据变为 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’])
说明
训练模型
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() 返回值
输出一个1*10的矩阵,分别对应图片上数字为0-9的可能性。
这张图片对应的数字的最大可能性,就是该矩阵最大值对饮的下标
获取array的最大值
参考
结果
图片为:
预测为:
莫凡Python之keras 2的更多相关文章
- 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 ...
- win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总
win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总 2019-09-20 15:06:03 wyx100 阅读数 38更多 分类专栏: M ...
- 【Python】keras神经网络识别mnist
上次用Matlab写过一个识别Mnist的神经网络,地址在:https://www.cnblogs.com/tiandsp/p/9042908.html 这次又用Keras做了一个差不多的,毕竟,现在 ...
- 在ubuntu安装python, theano, keras , Spearmint, Mongodb
系统配置: Ubuntu 14 (其他系统也差不多如下操作) 1. 通过anaconda安装 python 地址: https://www.continuum.io/downloads#linux 2 ...
- win7上python+theano+keras安装
https://blog.csdn.net/yongjiankuang/article/details/50485610 其实过程很简单,首先说一下安装条件: 1.win7 (32和64都可以,下载安 ...
- 【Python】keras使用LSTM拟合曲线
keras生成的网络结构如下图: 代码如下: from sklearn.preprocessing import MinMaxScaler from keras.models import Seque ...
- 【Python】keras使用Lenet5识别mnist
原始论文中的网络结构如下图: keras生成的网络结构如下图: 代码如下: import numpy as np from keras.preprocessing import image from ...
- 【Python】keras卷积神经网络识别mnist
卷积神经网络的结构我随意设了一个. 结构大概是下面这个样子: 代码如下: import numpy as np from keras.preprocessing import image from k ...
- python tensorflow keras
pip install tensorflow pip install keras pip install theano http://www.open-open.com/lib/view/open14 ...
- 好书推荐计划:Keras之父作品《Python 深度学习》
大家好,我禅师的助理兼人工智能排版住手助手条子.可能非常多人都不知道我.由于我真的难得露面一次,天天给禅师做底层工作. wx_fmt=jpeg" alt="640? wx_fmt= ...
随机推荐
- 教你如何自己搭环境部署华为FusionCompute虚拟化系统
https://www.bilibili.com/video/BV1iy4y177f4?p=10 实用的干货快先码起来,说不定以后会用到哟
- 用python从网页下载单词库
从网站下载单词库 1 每一页有几百个单词 2 每一个单词有独立的URL,URL中包含单词的中文解释 3 使用的库 requests,pyquery,web #coding:utf-8 import r ...
- 有道翻译-JS逆向-api调用
简单方法 -调用开源api 这个比较简单四行代码就可以搞定,先放代码: 1 import requests 2 while True: 3 input_data = input('请输入你要翻译的数据 ...
- flutter 常用ui库
1,EasyRefresh实现listview上拉刷新下拉加载,添加头尾布局,以及加载样式 地址:https://pub.flutter-io.cn/packages/flutter_easyrefr ...
- Django初识(一)
一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的设计模式,即模型M,视图V和模版T 1.框架介绍 具体介绍Django之前,必须先介绍Web框架的 ...
- jmeter分布式配置及问题记录
环境配置: 假设有2台电脑,主机(10.1.5.219),从机(10.1.5.212) 主机:jdk.jmeter.脚本.脚本所需的文件(需配置jdk和jmeter的环境变量) 从机:jdk.jm ...
- 12-K8S之调度器、预选策略和优选函数
目录 调度器.预选策略和优选函数 1.nodeSelector nodeName调度: 2.节点亲和性调度(pod亲和于node节点) 3.pod亲和度调度(pod亲和于pod) 4.pod反亲和性度 ...
- Winform帮助文档(C#打开chm定位到特定页面)国内最全总结写法。原文文档带翻译
下面比较啰嗦,只一句即可:Help.ShowHelp(null,"C:\help.hcm", HelpNavigator.Topic,"index.htm")方 ...
- oracle学习之索引的介绍
在关系型数据库中,用户查找数据与行的物理位置无关紧要.为了能够找到数据,表中的每一行均用一个rowid来标识,rowid能够标识数据库中某一行的具体位置.当Oracle数据库中存储海量的记录时,就意味 ...
- UML各种图实践题
1. 用状态图描述一部电梯的运行