java 数字卷积法 实现_eclipse撸一发Keras卷积神经网络对手写数字识别

一、导读

1、window10 python环境Anaconda 安装

2、keras安装

3、tensorflow安装

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

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

二、环境安装

1、Anaconda

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

8b05841cd5b67a0b862fd6a5b786439c.png

下载安装

a329f2cd3a92e615377649308edaf57e.png

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

67a2af5ec79d2b4c97d3f95a6709aa81.png

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

8be058a8d1efc700760a7c0fe74a9f1a.png

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

File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 32, in

import matplotlib.colorbar

File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\colorbar.py", line 32, in

import matplotlib.contour as contour

File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\contour.py", line 18, in

import matplotlib.font_manager as font_manager

File "E:\Program Files\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 48, in

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

adfb9f2e3160c32586861b6abe025d42.png

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

9729b5ffd7d4a70337a3770712275a58.png

(2)、配置eclipse开发环境

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

20cd076242d1adcd89f39a63ec89af1c.png

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

2afb6d9450cc339db5df1865a7aa0010.png

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

2b654aa381be3a68690ff71e2584b887.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值