作为一名AI工程师,掌握一门深度学习框架是必备的生存技能之一。
自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Facebook 诞生的 PyTorch 由于社区推动的易用性改进和越来越广泛的用例部署,而迅速赶上TensorFlow。
两个框架在当年一度备受争议,TensorFlow和PyTorch谁更好?
从去年校招开始到现在负责部门的面试,从我手上流走的简历多多少少也有上百封了。
面试了很多候选人,当问他们常用的深度学习框架时,发现他们清一色的选择了:PyTorch。
从各个方面可以看出,经过这些年的发展,PyTorch在学术圈的「垄断」地位基本已经站稳。
诚然,比起TensorFlow,大多数研究人员更偏爱PyTorch的API,PyTorch设计更科学,而TensorFlow自推出2.0版本后,与TF 1.x 的API差异实在不小,导致doc的阅读成本和版本适配成本都相当高。
如果是初学者,无脑Pytorch就对了。社区资源多、开源代码多、上手也很简单,各大厂商对Pytorch的支持也多(TensorRT、ONNX)。
其实框架的作用就是我们无需造轮子可以直接使用,并且节省工作量,对于Pytorch来说对研究友好、对训练友好、对白嫖大佬的开源代码也友好,对模型部署也友好,可以节省大把时间去做其他有意义的事情,没有理由不使用Pytorch。
如果是工作了,就看公司在用什么吧,因为公司是面向需求的。
在业界,无论算法性能有多好,总归还是要上线的,选择框架的时候便会考虑以下这些问题,是否方便部署到线上,支持多语言,并且有较好的系统稳定性以及有非常多线上应用实例。
TF 1.x系列面世较早,在学术界、工业界都有很深的积淀,工业界由于项目更重,牵一发而动全身,因此目前很多项目仍然停留在TF 1.x(1.1x)上面。
像业界大多数支撑搜广推场景的模型,还是用Tensorflow,TensorFlow适合大规模部署,特别是需要跨平台和嵌入式部署时。
至于延伸到选择哪个的问题:
显而易见,小孩子才做选择,而我们都要学,基本都要会用,这样才能自己选择工具,而不是工具挑选你。
然而,我们通过调研发现,80%的0-3岁互联网人没有系统的学习过Tensorflow、PyTorch方向,缺乏项目实战,处于比较浅层面的对比。
网上解读Tensorflow、PyTorch文章非常多但知识点零散,学习起来抓不住重点。
最近整理一套深度学习框架必备的学习资料,这套资料内容非常详尽全面,课程通过讲解和实战操作,带你从零开始训练网络,做到独立搭建和设计卷积神经网络(包括主流分类和检测网络),并进行神经网络的训练和推理(涉及PyTorch、Tensorflow、Caffe、Mxnet等多个主流框架),通过实战让你掌握各种深度学习开源框架。(资料已经全部整理好)
资料内容过多,不一一展开,仅截取框架学习部分目录大家感受下。
深度学习与神经网络
深度学习简介
基本的深度学习架构
神经元
激活函数详解(sigmoid、tanh、relu等)
感性认识隐藏层
如何定义网络层
损失函数
推理和训练
神经网络的推理和训练
bp算法详解
归一化
Batch Normalization详解
解决过拟合
dropout
softmax
手推神经网络的训练过程
从零开始训练神经网络
使用python从零开始实现神经网络训练
构建神经网络的经验总结
深度学习开源框架
pytorch
tensorflow
caffe
mxnet
keras
优化器详解(GD,SGD,RMSprop等