【深度学习 Hello World系列(一)】 用TFLearn实现MNIST

【深度学习 Hello World系列(一)】 用TFLearn实现MNIST_第1张图片

TFLearn是基于TensorFlow的高阶框架,也就是你只需要写很少的代码,就可以实现一个神经网络。和TFLearn类似的深度学习高阶框架,还有Keras和tensrolayer。

MNIST被公认为是深度学习的Hello World,我们今天用TFLearn来识别手写的数字:

【深度学习 Hello World系列(一)】 用TFLearn实现MNIST_第2张图片
MNIST中手写数字

安装TFLearn

我使用的anaconda安装,不了解anaconda的可以看一下我的另一篇文章Anaconda简易使用教程。

首先,我们用anaconda创建一个叫tflearn的新环境

conda create -n tflearn python=3.5

然后进入环境

source activate tflearn

然后安装库和TFLearn的依赖项

conda install numpy pandas scipy h5py
pip install tensorflow
pip install TFLearn

编码

安装好环境之后,我们就可以开始编码了。先引入相关库。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import numpy as np
import tensorflow as tf
import tflearn
import tflearn.datasets.mnist as mnist
获取数据
# 获取数据,这里直接一个函数就把训练数据、测试数据全部分配好了,就是这么简单
trainX, trainY, testX, testY = mnist.load_data(one_hot=True)
定义神经网络

这里,我们定义一个有784个输入,有两个隐藏层,输出层节点为10的神经网络。

def build_model():
    # 重置所有参数和变量
    tf.reset_default_graph()

    # 定义输入层
    net = tflearn.input_data([None, 784])

    # 定义隐藏层
    net = tflearn.fully_connected(net, 200, activation='ReLU')
    net = tflearn.fully_connected(net, 30, activation='ReLU')

    # 输出层
    net = tflearn.fully_connected(net, 10, activation='softmax')
    net = tflearn.regression(net, optimizer='sgd', learning_rate=0.1, loss='categorical_crossentropy')

    model = tflearn.DNN(net)
    return model
构建模型
# 构建模型
model = build_model()
训练模型
# 训练模型
model.fit(trainX, trainY, validation_set=0.1, show_metric=True, batch_size=100, n_epoch=30)
测试模型
predictions = np.array(model.predict(testX)).argmax(axis=1)   # 预测值
actual = testY.argmax(axis=1)  # 真实值
test_accuracy = np.mean(predictions == actual, axis=0)   # 准确度
print("Test accuracy: ", test_accuracy)

最后,我们打印出来的精确度:

【深度学习 Hello World系列(一)】 用TFLearn实现MNIST_第3张图片

这里只有97%,不算高,高的可达到99%多。
完整的代码在 https://github.com/freeman93/Demos-of-Deep-Learning-Frameworks

你可能感兴趣的:(【深度学习 Hello World系列(一)】 用TFLearn实现MNIST)