莫凡的python_莫凡Python之keras 2

莫凡Python 2

kearsregressionpython

20200327180447302748.png

Classifier 分类

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

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

参考资料

数据预处理、熟悉数据

# -*- 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 的一维数组

1585281549888.png

数字5

1585281564099.png

数字9

1585281571659.png

数字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 为学习率

1585300354803.png

编译模型

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

说明

1585300811419.png

关于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() 返回值

1585301699983.png

enter description here

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

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

获取array的最大值

参考

结果

图片为:

1585301943931.png

预测为:

1585301973455.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值