首页 > 编程语言 > 详细

莫凡Python之keras 2

时间:2020-03-27 18:04:44      阅读:67      评论:0      收藏:0      [点我收藏+]

莫凡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 的一维数组

技术分享图片
数字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

原文:https://www.cnblogs.com/Howbin/p/12582826.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!