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

第1章 打造深度学习工具箱

在本系列图书的第一本《Web安全之机器学习入门》中,我们以常见安全问题为背景介绍了常见的机器学习算法,主要以KNN、SVM、朴素贝叶斯等浅层学习算法为主。以Scikit-Learn为代表的机器学习开发库帮助我们可以很便捷地在单机环境下验证我们的想法。近几年深度学习发展迅速,以TensorFlow为代表的一批优秀的深度学习开发库大大降低了大家学习使用深度学习技术的门槛。作为本书的第1章,本章将帮助大家打造自己的深度学习工具箱,并结合实际例子介绍TensorFlow、TFLearn、PaddlePaddle以及Karas的使用方法。

本章代码请参考本书配套GitHub中的tools.py。

1.1 TensorFlow

TensorFlow是谷歌的第二代人工智能学习系统,其名称来源于本身的运行原理。Tensor意味着N维数组,Flow意味着基于数据流图的计算,TensorFlow为Tensor从流图的一端流动到另一端计算过程。所以也可以把TensorFlow当做将复杂的数据结构传输至人工智能神经网中进行分析和处理的系统。

TensorFlow可用于语音识别或图像识别等多项机器深度学习领域,是对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。

1.1.1 安装

TensorFlow支持非常丰富的安装方式http://www.tensorfly.cn/tfdoc/get_started/os_setup.html

1. Ubuntu/Linux。

        # 仅使用CPU的版本
        $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-
            0.5.0-cp27-none-linux_x86_64.whl
        # 开启GPU支持的版本 (安装该版本的前提是已经安装了CUDA sdk)
        $ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-
            0.5.0-cp27-none-linux_x86_64.whl

2. Mac OS X。

在Mac OS X系统上,我们推荐先安装homebrew,然后执行brew install python,以便能够使用homebrew中的Python安装TensorFlow:

        # 当前版本只支持CPU
        $ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-
            py2-none-any.whl

3.基于Docker的安装。

该命令将启动一个已经安装好TensorFlow及相关依赖的容器:

        $ docker run -it b.gcr.io/tensorflow/tensorflow

4.基于VirtualEnv的安装。

官方文档推荐使用VirtualEnv创建一个隔离的容器来安装TensorFlow,这是可选的,但是这样做能使排查安装问题变得更容易。VirtualEnv通过创建独立Python开发环境的工具,来解决依赖、版本以及间接权限问题。比如,一个项目依赖Django1.3,而当前全局开发环境为Django1.7,版本跨度过大,导致的不兼容使项目无法正常运行,使用VirtualEnv可以解决这些问题http://www.jianshu.com/p/08c657bd34f1

首先,安装所有必备工具:

        # 在Linux上:
        $ sudo apt-get install python-pip python-dev python-virtualenv
        # 在Mac上:
        # 如果还没有安装pip
        $ sudo easy_install pip
        $ sudo pip install --upgrade virtualenv

接下来,建立一个全新的VirtualEnv环境。为了将环境建在~/tensorflow目录下,执行如下代码:

        $ virtualenv --system-site-packages ~/tensorflow
        $ cd ~/tensorflow

然后,激活VirtualEnv:

        $ source bin/activate
        # 如果使用bash $ source bin/activate.csh
        # 如果使用csh (tensorflow)$
        # 终端提示符应该发生变化

在VirtualEnv内,安装TensorFlow:

        (tensorflow)$ pip install --upgrade <$url_to_binary.whl>

接下来,使用类似命令运行TensorFlow程序:

        (tensorflow)$ cd tensorflow/models/image/mnist
        (tensorflow)$ python convolutional.py
        # 当使用完TensorFlow
        (tensorflow)$ deactivate

1.1.2 使用举例

TensorFlow的API使用起来比较繁琐,通常直接使用针对其API的高层封装TFLearn即可,具体实现请参考下节TFLearn的使用举例。