[5]深度学习和Keras----一个图像识别的简单Demo

原创 2017年06月04日 22:48:43

在第三篇文章中。笔者给出了如何用Keras的神经网络训练一个线性函数,在这篇文章,笔者给出如何用Keras的神经网络,对mnist图库中的60000张手写的1~9的数字进行识别的一个例子。本代码是参考自莫烦视频中的代码,但是加了一个改进,把其中的一个测试图片的二进制已经其对应的标签打印出来了。这样大家有一个更直观的印象。

具体代码如下:

import numpy as np
np.random.seed(1337)
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Activation
from keras.optimizers import RMSprop

# Download the mnist to the path ~/.keras/datasets/ if it is the first time to be called
#XShape(6000 28X28),y shape(10,000,)
(X_train,y_train),(X_test,y_test)=mnist.load_data()

print(X_test[0])
print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
print(y_test[0])
#Data pre-processing
X_train=X_train.reshape(X_train.shape[0],-1)/255 #Normalize
X_test=X_test.reshape(X_test.shape[0],-1)/255 #Normalize
y_train=np_utils.to_categorical(y_train,10)
y_test=np_utils.to_categorical(y_test,10)


#Other way to build your neural net
model=Sequential([
        Dense(32,input_dim=784),
        Activation('relu'),
        Dense(10),
        Activation('softmax')
        ])

#Other way to define optimizer
rmsprop=RMSprop(lr=0.001,rho=0.9,epsilon=1e-08,decay=0.0)
#model.compile(optimizer='rmsprop')
model.compile(
        optimizer='rmsprop',
        loss='categorical_crossentropy',
        metrics=['accuracy']
        )

print('Training..............')
#Other way to train the model
model.fit(X_train,y_train,epochs=2,batch_size=32)

print('\nTesting..............')
loss,accuracy=model.evaluate(X_test,y_test)
print('\nTest lost:',loss)
print('Test accuracy',accuracy)

输出结果如下:

ubuntu@keras:~/keraslearn$ python3 2ImageClassify.py
Using TensorFlow backend.
Training..............
Epoch 1/2
2017-06-04 14:53:27.941940: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:53:27.941986: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:53:27.941993: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:53:27.941997: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:53:27.942002: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
60000/60000 [==============================] - 3s - loss: 0.3439 - acc: 0.9045
Epoch 2/2
60000/60000 [==============================] - 3s - loss: 0.1953 - acc: 0.9437


Testing..............
 9856/10000 [============================>.] - ETA: 0s
Test lost: 0.174390699773
Test accuracy 0.9505
ubuntu@keras:~/keraslearn$ sudo vi 2ImageClassify.py
ubuntu@keras:~/keraslearn$ python3 2ImageClassify.py
Using TensorFlow backend.
[[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0  84 185 159 151  60  36   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0 222 254 254 254 254 241 198 198 198 198 198 198
  198 198 170  52   0   0   0   0   0   0]
 [  0   0   0   0   0   0  67 114  72 114 163 227 254 225 254 254 254 250
  229 254 254 140   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0  17  66  14  67  67  67  59
   21 236 254 106   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   83 253 209  18   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  22
  233 255  83   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 129
  254 238  44   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  59 249
  254  62   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 133 254
  187   5   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   9 205 248
   58   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 126 254 182
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0  75 251 240  57
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0  19 221 254 166   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   3 203 254 219  35   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0  38 254 254  77   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0  31 224 254 115   1   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0 133 254 254  52   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0  61 242 254 254  52   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0 121 254 254 219  40   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0 121 254 207  18   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7
Training..............
Epoch 1/2
2017-06-04 14:55:54.309716: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:55:54.309750: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:55:54.309756: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:55:54.309761: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-04 14:55:54.309765: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
60000/60000 [==============================] - 3s - loss: 0.3430 - acc: 0.9050
Epoch 2/2
60000/60000 [==============================] - 3s - loss: 0.1944 - acc: 0.9441


Testing..............
 8992/10000 [=========================>....] - ETA: 0s
Test lost: 0.173723190146
Test accuracy 0.9514


@其中reshape的作用是把一个图片的28X28个像素的2维数组,转成一个一维度的数组。

reshape(X_train.shape[0],-1)/255

@np_utils.to_categorical方法是把1~9的数字,转成一个二进制数组中来表示。

比如, 7 被np_utils.to_categorical作用后,就会变成:

[ 0.  0.  0.  0.  0.  0.  0.  1.  0.  0.]

7的数字对应的部分就变成了1,其他的部分变成了0.


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chancein007/article/details/72862265

用深度学习keras的cnn做图像识别分类,准确率达97%

向AI转型的程序员都关注了这个号???大数据挖掘DT数据分析  公众号: datadwKeras是一个简约,高度模块化的神经网络库。可以很容易和快速实现原型(通过总模块化,极简主义,和可扩展性)同时支...
  • meyh0x5vDTk48P2
  • meyh0x5vDTk48P2
  • 2017-12-17 00:00:00
  • 1068

【深度学习】简单地利用keras做车标识别

一次简简单单的实验课的内容而已。 首先把给出的样本素材放缩的32*32的大小,这部分可以用Python的批处理和opencv中的放缩函数resize()来做,在此我就不列出代码了。 列举出...
  • qq_31548387
  • qq_31548387
  • 2016-07-22 12:41:28
  • 3330

用keras小试CNN卷积神经网络应用于人脸识别

Keras是一个简约,高度模块化的神经网络库。采用Python / Theano开发。 使用Keras如果你需要一个深度学习库: 可以很容易和快速实现原型(通过总模块化,极简主义,和可扩展...
  • eagelangel
  • eagelangel
  • 2016-02-28 14:49:26
  • 20538

从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块

[转] http://www.leiphone.com/news/201703/JNPkCt08zJd9znzZ.html 自 2015 年 11 月首次发布以来,TensorFlo...
  • xiangz_csdn
  • xiangz_csdn
  • 2017-03-29 10:13:01
  • 13991

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层 convolution neural network 上一篇介绍了基础核心层,就是用来构建普通网络的基础部...
  • niuwei22007
  • niuwei22007
  • 2015-10-23 21:52:09
  • 10508

大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块

转自:http://tech.sina.com.cn/roll/2017-03-22/doc-ifycspxn9397393.shtml 视频:https://v.qq.com/x/page/n03...
  • lwq1026
  • lwq1026
  • 2017-05-22 12:46:08
  • 5622

卷积神经网络实战(可视化部分)——使用keras识别猫咪

在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。我经常会想,要是能将神经网络的过程分解,看一看...
  • And_w
  • And_w
  • 2017-04-21 18:52:32
  • 3116

Keras 浅尝之MNIST手写数字识别

最近关注了一阵Keras,感觉这个东西挺方便的,今天尝试了一下发现确实还挺方便。不但提供了常用的Layers、Normalization、Regularation、Activation等算法,甚至还包...
  • u012556077
  • u012556077
  • 2015-12-20 17:50:06
  • 9662

使用Keras进行图像分类

使用Keras框架进行图像分类,数据集Caltech101和cifar10。
  • u010632850
  • u010632850
  • 2017-08-11 20:22:10
  • 5067

深度学习(十)keras学习笔记

keras与torch7的使用非常相似,是最近才火起来的深度学习开源库,底层是用了theano。keras可以说是python版的torch7,对于快速构建CNN模型非常方便。同时也包含了一些最新文献...
  • hjimce
  • hjimce
  • 2015-10-13 10:38:19
  • 39588
收藏助手
不良信息举报
您举报文章:[5]深度学习和Keras----一个图像识别的简单Demo
举报原因:
原因补充:

(最多只允许输入30个字)