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

一、导读

    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

    77fceb664fa0de1bf73b36cc1747064cdb2.jpg

    下载安装

    af842fb6e4cb50fa80f41f72dae6e4b3c86.jpg

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

    4acfd9f7ae5f54df3356d7684e4d14da74a.jpg

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

    f91ff54d665489ad28f9a24ffef5e567b71.jpg

    特别说明:安装之后,可能有些包是有问题的,例如: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

    43294b5e043f8040f8e3c581d832be4cc8e.jpg

 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,安装

    4a76e241c1edbef36be78786b0544e82383.jpg

    (2)、配置eclipse开发环境

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

        8ee69b1dba8777bd85cde37dd2a674d5b77.jpg

    配置完成点确定即可,便可以在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()

    8c8870089d2f9839c34118bfea5b7b80b2d.jpg

    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程序)

    938ee9984992059cde9f1e63909f2c9c85a.jpg

    

快乐源于分享。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值