[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.


版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

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

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

易用的深度学习框架Keras简介及使用

之前我一直在使用Theano,前面五篇Deeplearning相关的文章也是学习Theano的一些笔记,当时已经觉得Theano用起来略显麻烦,有时想实现一个新的结构,就要花很多时间去编程,所以想过将...

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

keras与torch7的使用非常相似,是最近才火起来的深度学习开源库,底层是用了theano。keras可以说是python版的torch7,对于快速构建CNN模型非常方便。同时也包含了一些最新文献...
  • hjimce
  • hjimce
  • 2015年10月13日 10:38
  • 31534

我的keras小例子及问题

对951张图train  对89张test    4个类 from keras.preprocessing.image import ImageDataGenerator,img_to_array...

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

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

使用Keras进行图像分类

使用Keras框架进行图像分类,数据集Caltech101和cifar10。

keras的基本用法(五)——图像predict

keras的基本用法(五)——图像predict

全卷机神经网络图像分割(U-net)-keras实现

最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用 keras 实现了,并且用了一个医学图像的数据集进行了图像分割。...

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

keras学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/49095199 作者:hjimce keras与torch7的使用非常相...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[5]深度学习和Keras----一个图像识别的简单Demo
举报原因:
原因补充:

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