当前位置:澳门贵宾厅 > www.vip8888.com > AI安全主要指使用AI技术赋能传统安全产品以及保护智能设备,澳门贵宾厅Python 所用的包和环境
AI安全主要指使用AI技术赋能传统安全产品以及保护智能设备,澳门贵宾厅Python 所用的包和环境
2020-04-15

maidou:3book liu.yan$ source activate python27

保存和加载环境

共享环境这项功能确实很有用,它能让其他人安装你的代码中使用的所有包,并确保这些包的版本正确。可以使用conda env export > environment.yaml将包保存为AI安全主要指使用AI技术赋能传统安全产品以及保护智能设备,澳门贵宾厅Python 所用的包和环境。YAML。第一部分conda env export写出环境中的所有包(包括 Python 版本)。

上图可以看到列出了环境的名称和所有依赖项及其版本。导出命令的第二部分> environment.yaml将导出的文本写入到 YAML 文件environment.yaml中。现在可以共享此文件,而且其他人能够创建和你用于项目相同的环境。

要通过环境文件创建环境,请使用conda env create -f environment.yaml。这会创建一个新环境,而且它具有在environment.yaml中列出的同一库。

如果你对安全的基础知识不是很熟悉,我强烈推荐刺的《白帽子讲web安全》

最佳做法

Package plan for installation in environment/anaconda2/envs/python27:

删除环境

如果你不再使用某些环境,可以使用conda env remove -n env_name删除指定的环境(在这里名为env_name)。

conda list | wc -l

管理包

安装了 Anaconda 之后,管理包是相当简单的。要安装包,请在终端中键入conda install package_name。例如,要安装 numpy,请键入conda install numpy。

你还可以同时安装多个包。类似conda install numpy scipy pandas的命令会同时安装所有这些包。还可以通过添加版本号(例如conda install numpy=1.10)来指定所需的包版本。

Conda 还会自动为你安装依赖项。例如,scipy依赖于numpy,因为它使用并需要numpy。如果你只安装scipy(conda install scipy),则 conda 还会安装numpy(如果尚未安装的话)。

大多数命令都是很直观的。要卸载包,请使用conda remove package_name。要更新包,请使用conda update package_name。如果想更新环境中的所有包(这样做常常很有用),请使用conda update --all。最后,要列出已安装的包,请使用前面提过的conda list。

如果不知道要找的包的确切名称,可以尝试使用conda search search_term进行搜索。例如,我知道我想安装Beautiful Soup,但我不清楚确切的包名称。因此,我尝试执行conda search beautifulsoup。

假设我们已经创建一个名为python27的环境,指定Python版本是2.7,激活该环境的方法如下。

环境

除了管理包之外,conda 还是虚拟环境管理器。它类似于另外两个很流行的环境管理器,即virtualenv和pyenv。

环境能让你分隔你要用于不同项目的包。你常常要使用依赖于某个库的不同版本的代码。例如,你的代码可能使用了 Numpy 中的新功能,或者使用了已删除的旧功能。实际上,不可能同时安装两个 Numpy 版本。你要做的应该是,为每个 Numpy 版本创建一个环境,然后在适用于项目的环境中工作。

澳门贵宾厅,在应对 Python 2 和 Python 3 时,此问题也会常常发生。你可能会使用在 Python 3 中不能运行的旧代码,以及在 Python 2 中不能运行的新代码。同时安装两个版本可能会造成许多混乱和错误。而创建独立的环境会好很多。

也可以将环境中的包的列表导出为文件,然后将该文件与代码包括在一起。这能让其他人轻松加载代码的所有依赖项。pip 提供了类似的功能,即pip freeze > requirements.txt。

在 Windows 上,会随 Anaconda 一起安装一批应用程序:

Anaconda Navigator,它是用于管理环境和包的 GUI

Anaconda Prompt 终端,它可让你使用命令行界面来管理环境和包

Spyder,它是面向科学开发的 IDE

export PATH=/anaconda2/bin:$PATH

Anaconda 能让你轻松安装在数据科学工作中经常使用的包。你还将使用它创建虚拟环境,以便更轻松地处理多个项目。Anaconda 简化了我的工作流程,并且解决了我在处理包和多个 Python 版本时遇到的大量问题。

AI的基础知识

列出环境

如果忘记了环境的名称(我有时会这样),可以使用conda env list列出你创建的所有环境。你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。默认的环境(即当你不在环境中时使用的环境)名为root。

python setup.py install

Anaconda 实际上是一个软件发行版,它附带了conda、Python 和 150 多个科学包及其依赖项。应用程序conda是包和环境管理器。

# added by Anaconda2 5.0.0 installer

使用环境

对我帮助很大的一点是,我的 Python 2 和 Python 3 具有独立的环境。我使用了conda create -n py2 python=2和conda create -n py3 python=3创建两个独立的环境,即py2和py3。现在,我的每个 Python 版本都有一个通用环境。在所有这些环境中,我都安装了大多数标准的数据科学包(numpy、scipy、pandas 等)。

我还发现,为我从事的每个项目创建环境很有用。这对于与数据不相关的项目(例如使用 Flask 开发的 Web 应用)也很有用。例如,我为我的个人博客(使用Pelican)创建了一个环境。

conda search numpy

了解更多信息

要详细了解 conda 和它如何融入到 Python 生态系统中,请查看这篇由 Jake Vanderplas 撰写的文章:Conda myths and misconceptions(有关 conda 的迷思和误解)。此外,有空也可以参考这篇conda 文档。

总结

进入环境

创建了环境后,在 OSX/Linux 上使用source activate my_env进入环境。在 Windows 上,请使用activate my_env。

进入环境后,你会在终端提示符中看到环境名称,它类似于(my_env) ~ $。环境中只安装了几个默认的包,以及你在创建它时安装的包。可以使用conda list检查这一点。在环境中安装包的命令与前面一样:conda install package_name。不过,这次你安装的特定包仅在你进入环境后才可用。要离开环境,请键入source deactivate(在 OSX/Linux 上)。在 Windows 上,请使用deactivate。

我们可以发现在当前用户的profile文件的最后增加了如下内容,表明已经将Anaconda的bin目录下的命令添加到了PATH变量中,可以像使用系统命令一样直接使用Anaconda的命令行工具了。

共享环境

在 GitHub 上共享代码时,最好同样创建环境文件并将其包括在代码库中。这能让其他人更轻松地安装你的代码的所有依赖项。对于不使用 conda 的人,我通常还会使用pip freeze(在此处了解详情)将一个 piprequirements.txt文件包括在内。

root * /anaconda2

如何使用Anaconda来管理 Python 所用的包和环境

(python27) maidou:3book liu.yan$

使用conda来管理包和环境能减少将来在处理你要使用的各种库时遇到的问题。

# packages in environment at /anaconda2/envs/python27:

管理环境

如前所述,可以使用 conda 创建环境以隔离项目。要创建环境,请在终端中使用conda create -n env_name list of packages。在这里,-n env_name设置环境的名称(-n是指名称),而list of packages是要安装在环境中的包的列表。例如,要创建名为my_env的环境并在其中安装 numpy,请键入conda create -n my_env numpy。

创建环境时,可以指定要安装在环境中的 Python 版本。这在你同时使用 Python 2.x 和 Python 3.x 中的代码时很有用。要创建具有特定 Python 版本的环境,请键入类似于conda create -n py3 python=3或conda create -n py2 python=2的命令。实际上,我在我的个人计算机上创建了这两个环境。我将它们用作与任何特定项目均无关的通用环境,以处理普通的工作(可轻松使用每个 Python 版本)。这些命令将分别安装 Python 3 和 2 的最新版本。要安装特定版本(例如 Python 3.3),请使用conda create -n py python=3.3。

source activate python27

管理

包管理器用于在计算机上安装库和其他软件。你可能已经熟悉 pip,它是 Python 库的默认包管理器。conda 与 pip 相似,不同之处是可用的包以数据科学包为主,而 pip 适合一般用途。但是,conda并非像 pip 那样专门适用于 Python,它也可以安装非 Python 的包。它是适用于任何软件堆栈的包管理器。也就是说,并非所有的 Python 库都能通过 Anaconda 发行版和 conda 获得。在使用 conda 的同时,你仍可以并且仍将使用 pip 来安装包。

Conda 安装了预编译的包。例如,Anaconda 发行版附带了使用MKL 库编译的 Numpy、Scipy 和 Scikit-learn,从而加快了各种数学运算的速度。这些包由发行版的贡献者维护,这意味着它们通常滞后于新版本。但是,由于有人需要为许多系统构建这些包,因此,它们往往更为稳定,而且更便于你使用。

如果你对算法的数学原理非常感兴趣,我同时也推荐周老师的西瓜书,这本书从数学角度对机器学习的原理介绍的非常详细。

Fetching package metadata ..

Anaconda强大的包管理以及多种Python环境并存使用主要以来于conda命令,常用的conda命令列举如下。

conda install tensorflow

source deactivate

安装方法如下:

libcxx 4.0.1 h579ed51_0

conda list

[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] ondarwin

查看目前一共具有几个环境,发现除了系统默认的root环境,又多出了我们创建的python27环境。

conda remove -n python27 numpy

然后进入Keras目录安装即可。

建议在linux和mac环境进行机器学习程序的开发,开发语言也强烈推荐python,一方面python容易掌握,另外一方面大量的机器学习库仅支持python。

Scikit-Learn是基于Python的机器学习模块,基于BSD开源许可证。这个项目最早由在2007年发起的,目前也是由社区自愿者进行维护。Scikit-Learn的官方网站上面可以找到相关的Scikit-Learn的资源,模块下载,文档,例程等等。Scikit-Learn的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理,具体可以参考官方网站上的文档。

# 查找package信息

ca-certificates 2017.08.26 ha1e5d58_0

conda install anaconda

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

# conda environments:

240

Anaconda是一个用于科学计算的Python开发平台,支持 Linux,Mac和Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题。Anaconda利用conda命令来进行package和environment的管理,并且已经包含了Python和相关的配套工具。Anaconda集成了大量的机器学习库以及数据处理必不可少的第三方库,比如NumPy,SciPy,Scikit-Learn以及TensorFlow等。

一路使用默认配置进行安装,安装完成后出现如下所示的界面,表明安装成功。

继续统计包的个数,除去2行的无关内容,当前环境下已经有238个包了。

#

pip install keras

conda update -n python27 numpy

#

python27 /anaconda2/envs/python27

Keras的安装非常简便,使用pip工具即可。

conda list | head -6

如果你对算法的底层实现和深层原理并不感兴趣,更想了解如何从编程层面去使用机器学习,我强烈推荐《Python数据挖掘入门与实践》,这本书以scikit-learn为主要开发环境,结合大量例子介绍了常见算法的使用。

TensorFlow支持非常丰富的安装方式,在Linux和Mac 可以直接使用默认版本安装。

同时也可以使用pip命令直接安装。

libcxxabi 4.0.1 hebd6815_0

(python27) maidou:3book liu.yan$ python

点击安装包,选择安装的硬盘,通常Mac本也只有一块硬盘,使用默认安装即可。

conda list -n python27

Python 2.7.14 |Anaconda, Inc.| (default, Oct 5 2017,02:28:52)

pip install tensorflow

Solving package specifications: .

在python27的环境下查看Python版本,果然是2.7版本。

cat ~/.bash_profile

哈佛大学发布《人工智能与国家安全》报告,指出AI的发展将通过变革军事优势、信息优势和经济优势等三方面影响国家安全,建议美国政府保持美国的技术领先地位。而最近,俄罗斯总统普京就AI领域的竞赛警告:“谁成为了这个领域的领导者,谁就将成为世界的统治者”。习近平总书记也在多次讲话中谈到人工智能的迅猛发展,强调“我们不仅要把我国机器人水平提高上去,而且要尽可能多地占领市场”。可见AI技术已经得到大国国家层面的重视。Strategy Analytics的报告指出,到2020年会有500亿台物联网设备在全球部署。埃森哲预测,到2035年,人工智能将让年度经济增长率提升一倍。在这样的背景下,AI安全显得尤其重要,针对AI安全的研究已经成为整个安全行业最重要最前沿的一个方向。

Anaconda默认安装的第三方包里没有包含TensorFlow和Keras,需要使用命令手工安装,以TensorFlow为例,可以使用conda命令直接安装。

conda info envs

# 安装package

# 查看当前环境下已安装的包

conda list | wc -l

18

conda install -n python27 numpy

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

下载页面

Anaconda框架

开发环境

pip install tensorflow

AI安全概述

如果你有一定的安全背景,想入门AI安全,或者想看下AI在安全领域的应用,可以看下我的两本以web安全常见问题为背景,介绍AI安全的书《Web安全之机器学习入门》和《Web安全之深度学习实战》

通常可以创建了两个环境,分别是python27和python36,顾名思义对应的Python版本分别为2.7和3.6,用于满足不同案例对python版本的不同要求。

# 查看某个指定环境的已安装包

Type help, copyright,credits or license for more information.

# 创建一个名为python27的环境,指定Python版本是2.7

Keras的在线文档内容非常丰富,地址为:

统计包的个数,除去2行的无关内容,当前环境下有16个包。

conda create name python27 python=2.7

Anaconda的安装非常方便,从其官网的下载页面选择对应的安装包,以我的Mac本为例,选择macOS对应的图形化安装版本。

理解AI安全最简单的方式就是从攻防的视角。从攻击的角度讲,AI安全可以细分为使用AI技术进行攻击、攻击AI模型和攻击智能设备。从防守的角度,AI安全主要指使用AI技术赋能传统安全产品以及保护智能设备。有兴趣的同学可以关注下我之前的文章《AI时代的攻与防》

如果要退出该环境,命令如下所示。

查看python27环境下默认安装了哪些包,为了避免显示内容过多,过滤前6行查看。

在python27环境下安装Anaconda默认的全部安装包,整个安装过程会比较漫长,速度取决于你的网速。

使用如下命令查看当前用户的profile文件的内容。

AI的学习坡度高于Python这类编程语言,但是并非只有屈指可数的大公司和科研院所才能掌握。我们即需要有足够的耐心踏实的进行学习,同时也不要有畏难情绪。下面我结合自己的学习经历,推荐几本适合入门的书籍。

TensorFlow虽然功能强大,但是开发效率比较低,建议大家使用Keras。Keras是一个高级别的Python神经网络框架,能在TensorFlow或者 Theano 上运行。Keras和TensorFlow的关系可以理解为win32 API和MFC的关系。

# 更新package

首先是《机器学习实战》,这本书相比学院派的机器学习理论书籍,使用了大量的篇幅介绍了如何基于Python去实现常见的机器学习算法。通过这本书可以比较深刻的理解常见算法的底层实现。

# 删除package

certifi 2017.7.27.1 py27h482ffc0_0

pip install -U scikit-learn