【研究生工作周报】

学习目标(第一周):

了解和学习深度学习框架

  • 一周熟悉主流深度学习框架并尝试搭建
  • tensorflow
  • pytorch

学习内容:

  1. 了解主流深度学习框架的优势,特点以及应用场景
  2. 搭建 pytorch框架
  3. 初识stanford吴恩达教授深度学习课程

学习时间:

  • 5.7~5.14

学习产出:

  • CSDN 技术博客 1 篇
  • 习得 vlog 视频 1 个
  • 完成 pytorch框架搭建

框架介绍

近年来随着深度学习的发展,出现很多深度学习框架。比如TensorFlow,Pytorch,Keras,Chainer,Paddle飞浆等。
这些深度学习框架提供神经网络单元,损失函数和优化器,用来帮助我们组装和训练神经网络模型。Tensorflow和Pytorch是两个使用最广泛的深度学习框架。
当我们初入人工智能和深度学习领域,TensorFlow 和 PyTorch 应该选择哪个框架? 通过对教程的学习,这里从易用性、训练时间、训练精度、内存使用、使用趋势等方面简要分析一下。

Tensorflow 2.0

Tensorflow是由谷歌支持的开源框架。Tensorflow2.0专注于自己简洁性和易用性。

  • 在训练方面:
    使用tk.keras和eager execution轻松构建模型。为研究提供强大的实验工具。

  • 在研究方面:
    为研究提供强大的实验工具。
    tk.keras: 允许创建复杂的拓扑,包括使用残差层,自定义多输入输出模型以及强制编写的正向传递。轻松创建自定义训练循环。低级TensorFlow API始终可用,并与更高级别的抽象一起工作,以实现完全可定制的逻辑。

  • 在部署方面:
    在任意平台上实现稳健的生产环境模型部署,不论是在服务器上,边缘设备还是网页上,也不论你是用的是什么语言或平台,TensorFlow 总能让你轻易训练和部署模型。

  • 数据可视化:
    Tensorflow提供了TensorBoard可视化工具,可以图形方式可视化数据。它还允许对节点进行简单调试,查看代码的执行状况,帮助解决神经网络问题。

  • 兼容性:
    Tensorflow与多种语言兼容,如C++,JavaScript,Python,C#,Ruby,and Swift。

  • 硬件支持
    Tensorflow在GPU和CPU系统中使用不同的分配策略。Tensorflow还可以使用TPU,其计算速度比GPU和CPU快。

Pytorch

Pytorch是一个能在CPU和GPU上运行并解决各类深度学习问题的深度学习框架。可以看作是支持GPU计算和自动微分计算的Numpy库。Pytorch是一个灵活,容易学习的Python库,在学术和研究领域Pytorch是一个最受欢迎的深度学习库。
Pytorch框架的产生受到Torch和Chainer这两个框架的启发。与Torch使用Lua语言相比,Pytorch是一个Python优先的框架,我们可以继承Pytorch类然后自定义。与Chainer类型相比,Pytorch框架具有自动求导的动态图功能,也就是所谓的define by run,即当Python解释器运行到相应的行时才创建计算图。

Pytorch特点

  • 易于使用的API
  • Python的支持
    Pytorch可以顺利与Python数据科学栈集成。非常类似于Numpy
  • 动态计算图
    取代了具有特定优势的静态图,Pytorch为我们提供了一个框架,以便可以在运行时构建计算图,甚至在运行时更改它们。
  • 支持分布式训练
    Pytorch可实现研究和生产中的分布式训练和性能优化。
  • 部署方便
    Pytorch提供了可用于大规模部署Pytorch模型的工具。
  • 强大的生态系统
    Pytorch具有丰富的工具和库生态系统,为计算机视觉,NLP等方面的开发提供便利。
  • 内置开放神经网络互换协议(ONNX)
    可以很方便与其他深度学习框架互操作。

性能比较

【研究生工作周报】_第1张图片

上边的基准旨在通过将Pytorch的单机eager模型性能与基于图形的深度学习框架Tensorflow进行比较,从而展示其整体性能。

精度比较

【研究生工作周报】_第2张图片

对于给定相同的训练模型和数据集进行训练,两个框架都能够准确地实现神经网络训练,并能够产生相同的结果。

  • 因此我们得出结论两种模型精度基本一致

训练时间

前面图也显示了Tensorflow和Pytorch的训练时间。图中显示Tensorflow的训练时间(平均11.19s)比Pytorch(平均7.67s)更长一些。

  • 结论:Pytorch训练时间更优秀一点

内存使用比较

与Pytorch的内存使用量(3.5GB RAM)相比,TensorFlow(1.7GB RAM)训练期间内存使用显著降低,两种框架在训练期间内存使用上都略有一些变化幅度,在初始加载数据时内存使用率较高:TensorFlow(4.8GB),Pytorch(5GB)。

  • 结论:TensorFlow内存使用效率更高

易用性比较

Pytorch使用面向对象编程的方式构建网络。
TensorFlow在创建网络和训练方便使用高阶低阶相结合的方式。
低阶方法允许采用用户更自定义的方法来形成神经网络,从而实现更专业化的功能。
高阶的API使用tk.Keras,封装的更好,简明易用,适合入门和教授基本概念。

  • 主观上认为两种模型易用性不分伯仲

应用比较

【研究生工作周报】_第3张图片
【研究生工作周报】_第4张图片

自2017年后Pytorch开发出后,Pytorch在各大会议论文中占比迅速增长,一跃成为最受欢迎的深度学习框架。
目前,在学术界Pytorch已经超越TensorFlow,因其简单易上手,被广大Reasearch使用。在工业界TensorFlow的生态更有利于快速部署,依旧无可取代。

  • 二者应用上同样不分伯仲

图片数据来源于b站up主人工智能学习课程

通过安装Anaconda搭建Pytorch框架

常见conda指令以及切换清华源下载pytorch
切换清华大学源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

Pytorch 清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

用conda创建新的环境
conda create --name 新环境名 python=版本号

切换环境命令
conda activate 环境名

安装Pytorch
conda install pytorch torchvision cudatoolkit=版本号

退出环境
conda deactivate

删除环境(删除需谨慎)
conda remove -n 环境名 --all

删除清华源并切换回原版源
conda config --remove-key channels

激活环境,输入python,进入python开发环境中测试是否安装成功
import torch
torch.cuda.is_available()

【研究生工作周报】_第5张图片

Stanford吴恩达教授深度学习课程

计划在下次周报中列出详细课程规划

本周就课程中第一门《神经网络与深度学习》Week1 深度学习概论进行学习。明白什么是神经网络,用神经网络进行监督学习,将深度学习应用于推荐系统,计算机视觉,语音识别,自动驾驶等领域,尝试着做了课程网站关于第一门课的十道选择检验自己的理解,帮助自己在后续课程中理解全部概念。

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