从开发者的角度来看,静态图意味着:
- 必须使用AI框架中定义的流程控制语句,而不是Python原生控制流语言
- 必须先定义完整个计算图,然后才能执行,非常不方便调试
- 整个计算图中必须使用框架中的数据类型,不能使用Python的数据类型
这有点儿像让开发者重新记住一套语法规则,非常不友好。
飞桨1.4版本之前,TensorFlow 1.4版本之前,都不支持动态图。PyTorch诞生之初就支持动态图,这也让PyTorch一下在开发者中火爆起来。那么,从开发者眼中,什么是动态图呢?
- 能够遵循Python组织代码的方式,并能使用 Python 数据结构
- 使用 Python 的原生控制语句而非计算图控制流
- 能够即时执行,不必等到整个计算图定义完才执行,方便调试
动态图对开发者来说,只要会Python,就能用AI框架定义深度学习模型,不必被迫再学习“一套语法规范”,而且调试简单。
现在三大主流框架,TensorFlow、PyTorch、飞桨,都支持动态图编程,用法基本一模一样,甚至连很多API函数的名字,都有一样,这简直就是开发者的福音,简单来说,你只要熟练任一个框架,其余两个框架,根本不需要专门学习,即可上手使用。
动态图时代,降低了AI框架之前切换的鸿沟,让开发者同时,快速,低学习成本的掌握三个主流框架成为可能。很多读者问,为啥要掌握三个AI框架,因为每个框架里面都有一些很有特色的模型,例如,飞桨里面有PP_YOLO, TensorFlow里面有EfficientDet,PyTorch里面有YOLOv5
网友评论