因为人工智能正在几乎全部自动化领域获得渗透。 深度学习是用于开发和最大化类人计算机效率的最棘手的架构之一。 为了帮助产品开发人员,Google,Facebook和其余大型科技公司已经发布了各类Python环境框架,能够学习,构建和培训多样化的神经网络。程序员
谷歌的TensorFlow是深度学习的开源框架,多年来受到欢迎。 使用新框架,PyTorch因其易于编写的代码而受到初学者的关注。 PyTorch是基于Python,C ++和CUDA后端开发的,可用于Linux,macOS和Windows。算法
这两个普遍使用的框架之间存在一些差别,多是由于它们实现代码,可视化技术以及静态和动态编程的方式。编程
咱们来看看差别:后端
部署代码浏览器
初始化时,在PyTorch上分配和构建图形遵循动态计算图形方法。 熟悉Python中的数学库的用户会发现它很容易,由于人们没必要为了构建图形而头脑发热。 您能够按照本身的方式直接编写输入和输出功能,而无需担忧尺寸张量。 经过CUDA支持,这使生活变得更加容易。网络
在TensorFlow中,人们必须努力构建张量(图形)的维度以及为变量分配占位符。 完成此操做后,必须运行会话才能计算出全部计算结果。 这样的痛苦,不是吗?架构
例如,tf.Session()用于构建会话,tf.Variable()用于将权重分配给变量,依此类推。 初始化后,能够构建一个神经网络,用于TensorFlow中的训练。框架
文档工具
PyTorch和TensorFlow的文档普遍可用,考虑到二者都在开发中,而PyTorch是最近发布的,与TensorFlow相比。 人们能够在两个框架上找到大量文档,其中实现获得了很好的描述。性能
这两个框架都提供了大量的教程,这有助于人们专一于经过用例学习和实现它们。
设备适配
PyTorch和TensorFlow都有GPU扩展可用。这两个框架之间的主要区别在于,当考虑GPU进行TensorFlow计算时,它会消耗全部可用GPU的整个内存。经过为特定进程分配正确的GPU设备能够避免这种状况。 tf.device()为您提供选择首选GPU的选项。因为TensorFlow是一种静态计算图形方法,所以能够轻松优化此框架上的代码。
在PyTorch上,变量能够与权重一块儿分配并同时运行,其中框架构建计算所需的图形。这方面的GPU使用已经经过CUDA安装启用,即便在尝试在CPU上运行时,PyTorch也老是试图找到要计算的GPU。所以,必须提供X.cpu()扩展才能在CPU上运行它。
在TensorFlow tf.device(/ cpu:0):参数用于在CPU上运行它。也能够选择使用tf.device(/ gpu:0)的GPU来选择第一个GPU或tf.device(/ gpu:1)来选择第二个GPU。
模型可视化
可视化是理解模型性能和工做的关键。 TensorFlow具备图形和模型TensorBoard的实时表示功能,很是方便。 在这里,人们不只可以得到神经网络的图形表示,还可以得到实时的损失和准确度图,其描绘了模型在特定迭代中的精确度。
这是一个实时分析,与PyTorch相比,TensorFlow更擅长此项,而PyTorch彻底缺少此功能。 您还能够可视化神经网络的流程图,包括音频文件(若是您的数据中存在),这很是棒。
结论
在将来,PyTorch可能会像TensorBoard同样添加可视化功能。 PyTorch因其动态的计算方法和简单性而愈来愈受欢迎。 建议初学者在继续使用TensorFlow以前在PyTorch上工做,这有助于他们专一于模型而不是花时间构建图形。
鉴于TensorFlow目前这么流行,想要学习和实践的程序员们也能够了解下谷歌最近的AI开源项目——AIY Projects。AIY 全称是 Artificial Intelligence Yourself,顾名思义就是利用 AI 来进行的 DIY 功能套件。借助 AIY 项目,创客能够利用人工智能来实现更像人与人交流的人机交互。谷歌目前为 AIY Projects 推出了两款硬件产品--AIY Voice Kit 和 AIY Vision Kit。
Vision Kit 由Raspberry Pi和Intel movidius提供动力。它能够运行具备低耗处理能力的深度学习算法。Raspberry Pi Zero WH 包括视觉处理单元芯片,能够高效地运行Tensor Flow图像处理。
并且谷歌为此还发布了一个TensorFlow.js的工具,有了这项工具,即便不是机器视觉领域的专家,你们也能够实现不少应用场景,好比在浏览器中训练本身的宠物脸辨识系统,在自家的监视系统中使用等等。