深度学习TensorFlow2.0 Python环境搭建

人工智能

首先要简单区别几个概念:人工智能机器学习深度学习神经网络。这几个词应该是出现的最为频繁的,但是他们有什么区别呢?

  • 人工智能:人类通过直觉可以解决的问题,如:自然语言理解,图像识别,语音识别等,计算机很难解决,而人工智能就是要解决这类问题。

  • 机器学习:机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。

  • 深度学习:其核心就是自动将简单的特征组合成更加复杂的特征,并用这些特征解决问题。

  • 神经网络:最初是一个生物学的概念,一般是指大脑神经元,触点,细胞等组成的网络,用于产生意识,帮助生物思考和行动,后来人工智能受神经网络的启发,发展出了人工神经网络。

来一张图就比较清楚了,如下图:
深度学习TensorFlow2.0 Python环境搭建_第1张图片

深度学习

现阶段深度学习三大框架,CaffeTensorFlowKeras

  • Caffe:一个清晰而高效的深度学习框架,也是一个被广泛使用的开源深度学习框架,在Tensorflow出现之前一直是深度学习领域Github star最多的项目。

  • TensorFlow:一个使用数据流图进行数值计算的开源软件库。图中的节点表示数学运算,而图边表示在它们之间传递的多维数据阵列(又称张量)。灵活的体系结构允许你使用单个API将计算部署到桌面、服务器或移动设备中的一个或多个CPU或GPU。

  • Keras:由纯Python编写而成并基于Tensorflow、Theano以及CNTK后端,相当于Tensorflow、Theano、 CNTK的上层接口,号称10行代码搭建神经网络,具有操作简单、上手容易、文档资料丰富、环境配置容易等优点,简化了神经网络构建代码编写的难度。目前封装有全连接网络、卷积神经网络、RNN和LSTM等算法。

框架对比:

对比维度 Caffe TensorFlow Kears
上手难度 1、不用不写代码,只需在.prototxt文件中定义网络结构就可以完成模型训练。
2、安装过程复杂,且在.prototxt 文件内部设计网络结构比较受限,没有在 Python 中设计网络结构方便、自由。配置文件不能用编程的方式调整超参数,对交叉验证、超参数Grid Search 等操作无法很方便的支持。
1、安装简单,教学资源丰富,根据样例能快速搭建出基础模型。
2、有一定的使用门槛。不管是编程范式,还是数学统计基础,都为非机器学习与数据科学背景的伙伴们带来一定的上手难度。另外,是一个相对低层的框架,使用时需要编写大量的代码,重新发明轮子。
1、安装简单,它旨在让用户进行最快速的原型实验,让想法变为结果的这个过程最短,非常适合最前沿的研究。
2、API使用方便,用户只需要将高级的模块拼在一起,就可以设计神经网络,降低了编程和阅读别人代码时的理解开销
框架维护 在 TensorFlow 出现之前一直是深度学习领域 GitHub star 最多的项目,前由伯克利视觉学中心(Berkeley Vision and Learning Center,BVLC)进行维护。 被定义为“最流行”、“最被认可”的开源深度学习框架, 拥有产品级的高质量代码,有 Google 强大的开发、维护能力的加持,整体架构设计也非常优秀。 开发主要由谷歌支持, API以“tf.keras"的形式打包在TensorFlow中。微软维护着Keras的CNTK后端。亚马逊AWS正在开发MXNet支持。其他提供支持的公司包括NVIDIA、优步、苹果(通过CoreML)
支持语言 C++/Cuda C++ python (Go,Java,Lua,Javascript,或者是R) Python
封装算法 1、对卷积神经网络的支持非常好,拥有大量的训练好的经典模型(AlexNet、VGG、Inception)乃至其他 state-of-the-art (ResNet等)的模型,收藏在它的 Model Zoo。
2、对时间序列 RNN、LSTM 等支持得不是特别充分。
1、支持CNN与RNN, 还支持深度强化学习乃至其他计算密集的科学计算(如偏微分方程求解等)。
2、计算图必须构建为静态图,这让很多计算变得难以实现,尤其是序列预测中经常使用的 beam search。
1、专精于深度学习,支持卷积网络和循环网络,支持级联的模型或任意的图结构的模型,从 CPU 上计算切换到 GPU 加速无须任何代码的改动。
2、没有增强学习工具箱,自己修改实现很麻烦。封装得太高级,训练细节不能修改、penalty细节很难修改。
模型部署 程序运行非常稳定,代码质量比较高,很适合对稳定性要求严格的生产环境,第一个主流的工业级深度学习框架。Caffe 的底层基于 C++,可以在各种硬件环境编译并具有良好的移植性,支持 Linux、Mac 和 Windows 系统,也可以编译部署到移动设备系统如 Android 和 iOS 上。 为生产环境设计的高性能的机器学习服务系统,可以同时运行多个大规模深度学习模型,支持模型生命周期管理、算法实验,并可以高效地利用 GPU 资源,让训练好的模型更快捷方便地投入到实际生产环境。灵活的移植性,可以将同一份代码几乎不经过修改就轻松地部署到有任意数量 CPU 或 GPU 的 PC、服务器或者移动设备上。 使用TensorFlow、CNTK、Theano作为后端,简化了编程的复杂度,节约了尝试新网络结构的时间。模型越复杂,收益越大,尤其是在高度依赖权值共享、多模型组合、多任务学习等模型上,表现得非常突出。
性能 目前仅支持单机多 GPU 的训练,不支持分布式的训练。 1、支持分布式计算,使 GPU 集群乃至 TPU 集群并行计算,共同训练出一个模型。
2、对不同设备间的通信优化得不是很好,分布式性能还没有达到最优。
无法直接使用多 GPU,对大规模的数据处理速度没有其他支持多 GPU 和分布式的框架快。用TensorFLow backend时速度比纯TensorFLow 下要慢很多。

TensorFlow

这里我们无疑选择TensorFlow,在Python中搭建TensorFlow开发环境,后续意于用C++编译TensorFlow,再在Python中实现一些全连接神经网络卷积神经网络循环神经网络经典模型,将其训练集部署到C++工程中使用。

Windows 10 环境搭建

安装Anaconda进行开发环境管理

  • Anaconda简述:Anaconda 是 Python 的一个开源发行版本。anaconda 里面集成了很多关于 python 科学计算的第三方库,主要面向科学计算且安装方便,而 python 是一个编译器,如果不使用 anaconda,那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好。Anaconda 提供一个管理工具 conda ,可以把 conda 看作是 pip + virtualenv +PVM (Python Version Manager) + 一些必要的底层库,也就是一个更完整也更大的集成管理工具。在我看来主要优点是预装了很多第三方库,而且Anaconda中增加了conda install命令,安装新package格外方便,还自带Spyder IDE 和Jupyter Notebook等开发工具,是初学者不再需要在开发环境上花太多功夫;同时为避免太多额外的的开发包被安装,增加系统内存消耗,也可以选择Miniconda,Miniconda只包括python与conda,而其余的库件可以通过手动安装。

  • Anaconda下载及安装方法
    我觉得Anaconda有些臃肿,比较喜欢Miniconda的小巧,所以我选择安装Miniconda,可以这里下载。
    Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包。

  • 使用Anaconda镜像
    Anaconda下载软件包,都是国外的,这里清华园提供了 清华大学开源软件镜像站,方便国内下载提速。
    可以通过修改用户目录下的 .condarc 文件。
    Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。
    在文件中添加以下内容

channels:
      - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
      - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
      - defaults

创建TensorFlow开发环境

建立环境名为"tf2.0"的开发环境,启动**Anaconda Prompt (Miniconda3)**命令:

	#step1:利用conda创建一个tensorflow的开发环境
    conda create -n tf2.0 python=3.7
    
    #step2:激活tensorflow2.0的开发环境
    conda activate tf2.0
    
    #step3:安装tensorflow2.0 cpu版本或gpu版本
    # 如果没有配置".condarc" 可以手动添加清华镜像源
    # 安装gpu版本的tensorflow2.0, cuda版本需要大于cuda-10.0 所以你需要确认好 conda中的cudnn和cudatoolkit版本
    #pip install tensorflow-gpu==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple    # gpu版本 
    pip install tensorflow==2.0.0    # cpu版本
    
    # 安装opencv 计算机视觉库
    pip install pip opencv_python
    
    #step4:参看一下安装情况
    pip list
    
    #step5:删除tf2.0开发环境
    conda activate base
    conda remove -n tf2.0 --all

这样使用conda可以随意搭建不同Python版本、不同TensorFlow版本的环境,任意删除使用。是不是非常方便。
这里是"tf2.0"的路径:
深度学习TensorFlow2.0 Python环境搭建_第2张图片

如果后续要使用标记工具,建议使用conda创建一个新的标志开发环境

# 安装lableme 深度学习标注工具
pip install labelme

VSCode编码测试

  • 首先需要在VS Code中,设置Python的环境变量。

打开–> 首选项–> 设置

深度学习TensorFlow2.0 Python环境搭建_第3张图片
深度学习TensorFlow2.0 Python环境搭建_第4张图片

  • 编写TensorFlow Python测试代码

  • 编译运行

此时如图所示报错,其实无关大雅,只是没有引入conda环境变量而且。不错看着闹心。
深度学习TensorFlow2.0 Python环境搭建_第5张图片
只需要在 VSCode 的settings.json中加入这一行配置即可:
深度学习TensorFlow2.0 Python环境搭建_第6张图片

然后再编译运行,一切正常,OK!!!
深度学习TensorFlow2.0 Python环境搭建_第7张图片

现在可以开始我们的TensorFlow之旅了~~~

你可能感兴趣的:(TensorFlow,深度学习)