Web安全之深度学习实战
上QQ阅读APP看书,第一时间看更新

1.2 TFLearn

TFLearn是一个模块化和透明的深度学习库,构建在TensorFlow之上,它为TensorFlow提供高层次API,目的是快速搭建试验环境,同时保持对TensorFlow的完全透明和兼容性。

TFLearn具有以下特点https://zhuanlan.zhihu.com/p/25322066

❑ 容易使用和易于理解的高层次API用于实现深度神经网络,附带教程和例子。

❑ 通过高度模块化的内置神经网络层、正则化器、优化器等进行快速原型设计。

❑ 强大的辅助函数,训练任意TensorFlow图,支持多输入、多输出和优化器。

❑ 简单而美观的图可视化,具有关于权值、梯度、特征图等细节。

❑ 无需人工干预,可使用多CPU、多GPU。

本书的主要代码都是基于TFLearn开发的。

1.安装。

TFLearn的安装推荐使用使用pip工具:

        pip install tflearn

如果需要使用源码安装,可以直接从GitHub上下载对应源码:

        https://github.com/tflearn

然后进入TFLearn目录安装即可:

        python setup.py install

2.使用举例。

TFLearn自带MNIST数据,使用函数mnist.load_data接口,并且可以通过指定one_hot=True直接获取使用独热编码的标签:

        X, Y, testX, testY = mnist.load_data(one_hot=True)

构造一个隐藏层为2层,每层核数分别为64、64,输出层核数为10的多层感知机,使用fully_connected函数即可完成构造全连接网络的工作,使用tflearn.input_data定义输入数据大小。为了避免过拟合,每层之间使用Dropout函数进行部分丢失处理:

        # Building deep neural network
        input_layer = tflearn.input_data(shape=[None, 784])
        dense1 = tflearn.fully_connected(input_layer, 64, activation='tanh',
                                  regularizer='L2', weight_decay=0.001)
        dropout1 = tflearn.dropout(dense1, 0.8)
        dense2 = tflearn.fully_connected(dropout1, 64, activation='tanh',
                                  regularizer='L2', weight_decay=0.001)
        dropout2 = tflearn.dropout(dense2, 0.8)
        softmax = tflearn.fully_connected(dropout2, 10, activation='softmax')

使用多层感知机进行训练,通过n_epoch设置训练的轮数:

        # Training
        model = tflearn.DNN(net, tensorboard_verbose=0)
        model.fit(X, Y, n_epoch=20, validation_set=(testX, testY),
                show_metric=True, run_id="dense_model")

经过20轮的训练后,准确率达到了99.54%:

        Training Step: 17200  | total loss: 0.43454 | time: 5.444s
        | SGD | epoch: 020 | loss: 0.43454- top3: 0.9685 | val_loss: 0.10618- val_
            acc: 0.9954-- iter: 55000/55000