您的位置:首页 > 编程语言 > Java开发

eclipse撸一发Keras卷积神经网络对手写数字识别

2019-05-25 10:13 585 查看

一、导读

    1、window10 python环境Anaconda 安装

    2、keras安装

    3、tensorflow安装

    4、eclipse python开发插件PyDev安装,配置

    5、keras卷积神经网络对手写数字识别

二、环境安装

    1、Anaconda 

    Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。功能非常齐全。

    下载地址:https://www.anaconda.com/distribution/#download-section

    

    下载安装

    

    安装成功后,配置环境变量,打开cmd,用命令python --version查看版本号

    

    其中,环境变量非常重要,ssl的环境变量必须配置,否则使用pip时会出现异常(pip is configured with locations that require TLS/SSL, however the ssl module in Python is not  available. )

    

    特别说明:安装之后,可能有些包是有问题的,例如:matplotlib和Pillow没法正常使用,会出现如下异常

File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 32, in <module>
import matplotlib.colorbar
File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\colorbar.py", line 32, in <module>
import matplotlib.contour as contour
File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\contour.py", line 18, in <module>
import matplotlib.font_manager as font_manager
File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 48, in <module>
from matplotlib import afm, cbook, ft2font, rcParams, get_cachedir
ImportError: DLL load failed: 找不到指定的模块。

    这时候,跟到异常的代码行,看哪些库是没有正常依赖进来的,重新安装即可。可以类推如下的操作,来进行

   pip uninstall matplotlib

    pip install matplotlib

    pip uninstall Pillow

    pip install Pillow

2、keras安装

    使用如下命令安装:

    pip install keras

    

 3、安装tensorflow

   由于keras本身不提供运行,它依赖于其他的运算引擎,例如TensorFlow、Theano、CNTK等,这里,我们安装TensorFlow作为keras的backend。

   用如下命令安装:

   Tensorflow有cpu版和gpu版

    cpu版:pip install --user --ignore-installed --upgrade tensorflow

    gpu版:pip install --user --ignore-installed --upgrade tensorflow-gpu

    这里,安装的是cpu版,--user参数是因为有权限问题,所以加上

    4、eclipse PyDev插件安装

    (1)、打开eclipse,Help->Eclipse Marketplace,搜索选择PyDev,安装

    

    (2)、配置eclipse开发环境

        window->preferences->PyDev->interpreters->Python Interpreter

        

    配置完成点确定即可,便可以在eclipse上开发python程序了,和开发java一样,非常方便。

三、Keras卷积神经网络进行mnist手写数字识别

    1、先加载数据集

    (x_train, y_train), (x_test, y_test) = mnist.load_data()

   说明: mnist.load_data()如果本地没有,在会去下载数据集

    打印一下x_train的shape,看看数据集有哪些东西

    print(x_train.shape)

    2、展示样本的图片

#将画板分为1行2列,本幅图位于第一个位置
plt.subplot(1,2,1)
# 打印两个个样本
plt.imshow(x_train[5], cmap='gray')
plt.subplot(1,2,2)
plt.imshow(x_train[10], cmap='gray')
plt.show()

    

    3、叠一个CNN网络

model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=(img_x, img_y, 1)))
model.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(64, kernel_size=(5, 5), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])

    和之前用dl4j叠CNN一样,《有趣的卷积神经网络》

    4、完整的代码

from keras.datasets import mnist
from keras.layers import Conv2D, MaxPool2D
from keras.layers import Dense, Flatten
from keras.models import Sequential
from keras.utils import to_categorical

import matplotlib.pyplot as plt

(x_train, y_train), (x_test, y_test) = mnist.load_data()

print(x_train.shape)

#将画板分为1行2列,本幅图位于第一个位置
plt.subplot(1,2,1)
# 打印两个个样本
plt.imshow(x_train[5], cmap='gray')
plt.subplot(1,2,2)
plt.imshow(x_train[10], cmap='gray')
plt.show()

img_x, img_y = 28, 28
x_train = x_train.reshape(x_train.shape[0], img_x, img_y, 1)
x_test = x_test.reshape(x_test.shape[0], img_x, img_y, 1)

x_train = x_train.astype('float32')/255
x_test = x_test.astype('float32')/255

y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=(img_x, img_y, 1)))
model.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(64, kernel_size=(5, 5), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])

model.fit(x_train, y_train, batch_size=128, epochs=1)

score = model.evaluate(x_test, y_test)
print('accuracy', score[1])

    5、运行结果

    eclipse run as  Python Run,迭代1个批次的结果如下。(当然,在eclipse中也可以debug调试python程序)

    

    

快乐源于分享。

   此博客乃作者原创, 转载请注明出处

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息