暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TensorFlow与PyTorch到底该如何选择?

AI有温度 2021-11-03
385

AI因你而升温,记得加个星标哦!

大家好,我是泰哥。后台很多同学问我深度学习框架到底该学TensorFlow
还是PyTorch
呢?我将在以下几个方面给出个人建议。

一、易学性与操作性

深度学习框架使用计算图来定义神经网络中执行的计算顺序。TF1
使用的静态图机制,PyTorch
使用动态图机制。

  • 静态图意味着计算图的构建和实际计算是分开完成(define and run)
  • 动态图意味着计算图的构建和实际计算是同时发生(define by run)

有的同学可能对概念不太理解,我们通过一个例子来对比动态图和静态图机制在编程实现上的差异,分别基于TF1
PyTorch
实现。

我们定义两个计数器a
b
a
初始为0,b
初始为10。当a
小于b
时,就给a
自身加2,b
自身加1,直到a
大于等于b
时程序结束。

TF1

import tensorflow as tf
# 先构建图
a = tf.constant(0)
b = tf.constant(10)

def cond(first_counter, second_counter, *args):
    return first_counter < second_counter

def body(first_counter, second_counter):
    first_counter = tf.add(first_counter, 2)
    second_counter = tf.add(second_counter, 1)
    return first_counter, second_counter
    
c1, c2 = tf.while_loop(cond, body, [a, b])

# 再创建会话进行计算
with tf.Session() as sess:
    a, b = sess.run([c1, c2])

print(a)
print(b)

在静态图中,需要事先定义整个运算流程与框架,再创建会话后才能进行运算。

PyTorch

import torch

a = torch.Tensor([0])
b= torch.Tensor([10])

while (a < b):
    a += 2
    b += 1

print(a)
print(b)

看到这里,同学们应该就能看出差异,代码除了定义张量Tensor
外,其余部分与Python
一模一样。因为PyTorch
是动态图,所以每次运算会构建新的计算图。

那么如果你会Python
,将意味着你在PyTorch
编程实现上不需要额外的学习成本。

Debug

在学习或工作中,调试代码肯定不可避免,我认为TF1
最大的劣势就是它难以Debug
。在建立Graph
的时候不报错,但一喂数据各种崩溃的痛相信不少小伙伴体会过。

而且TF1
作为静态图框架,打印中间结果必须要借助会话Session
运行才能生效,或者需要学习额外的tfdbg
工具。而如果用PyTorch
这样的动态图框架的话,就不需要多学一个额外的工具,只需要用正常的Python
调试工具就可以了。

二、未来前景

学习一项技术,首先肯定是为了满足当下需求,其次最好可以成为未来主流。

使用人群

下图来自于PapersWithCode网站,颜色面积代表使用该框架的论文公开代码库的数量。

在最新的一个月(2021年9月)新公开的论文代码中,两者的使用量已经相差了5倍,这就可以推测出PyTorch
在科研领域的占有率远远高于TF
,在学术圈有着几乎统治的地位。

写到这里,我们不难想到,未来这些科研人员与学生中有很大一部分人都要步入职场。

为什么没谈TF2

TF
的一贯优势就是落地部署框架选择较多并且成熟,加上我国大部分程序员都是代码的搬运工与修理工,喜欢在前人的代码基础上进行改造再生产,而不是自撸一套代码系统,所以它长期占据着工业市场。

TF2
的诞生让之前习惯了静态图的用户感到有些不适。TF2
是动态图框架,与TF1
的使用方法不同。如果之前使用TF1
的用户想过渡到TF2
就得重新学习,那么重新学习动态图框架,为什么不学习在动态图领域更加成熟稳定的PyTorch
呢?而且近年来Pytorch
在落地部署上也成熟了很多,绝对可以满足大部分应用需求。

综上所述,不论您现在是学生还是新型农民工,如果目前想要学习深度学习框架,我会推荐PyTorch
进行学习。


推荐阅读
鹅厂面试:赛马问题
为什么正态分布如此常见?
AI科普(一):什么是人工智能?
文章转载自AI有温度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论