您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

TensorFlow,为什么选择python语言?

TensorFlow,为什么选择python语言?

关于TensorFlow的最重要的认识是,在大多数情况下, 内核不是用Python编写的 :它是由高度优化的C 和CUDA(NVIDIA用于GPU编程的语言)结合而成。反过来,大多数情况是通过使用 Eigen(一种高 性能C 和CUDA数值库)和NVidia的cuDNN(一种针对NVidia GPU进行了非常优化的DNN库,用于诸如卷积之类的功能)而发生的。

TensorFlow的模型是程序员使用“某种语言”(很可能是Python!)来表达模型。该模型以TensorFlow构造编写,例如:

h1 = tf.nn.relu(tf.matmul(l1, W1) + b1)
h2 = ...

在运行Python时实际上未执行。相反,实际创建的是一个数据流图,该表示接受特定的输入,应用特定的操作,将结果作为输入提供给其他操作,等等。该模型由快速的C ++代码执行,并且在大多数情况下,操作之间传递的数据永远不会复制回Python代码

然后,程序员通过拉上节点来“驱动”该模型的执行-通常在Python中进行训练,并在Python中有时在原始C ++中进行服务:

sess.run(eval_results)

这个Python(或C 函数 调用)使用对C 的进程内调用或针对分布式版本的RPC调用C ++ TensorFlow服务器以使其执行,然后将结果复制回去。

答案很简单:对于许多数据科学家和机器学习专家来说,Python可能 最舒适的语言,它易于集成并可以控制C ++后端,同时在内部和外部也广泛使用。和开放源代码。鉴于使用TensorFlow的基本模型,Python的性能并不那么重要,因此很自然。NumPy使得NumPy可以轻松地在Python中进行预处理(也具有高性能),然后再将其馈入TensorFlow进行真正占用大量cpu的工作,这也是一个巨大的优势。

表示执行模型时不使用的模型也有很多复杂性- 形状推断(例如,如果您做matmul(A,B),结果数据的形状是什么?)和自动梯度计算。事实证明,能够用Python表达这些内容真是太好了,尽管从长远来看,我认为它们可能会转移到C ++后端,从而使添加其他语言变得更加容易。

(当然,希望是将来支持其他语言来创建和表达模型。使用其他几种语言来进行推理已经非常简单了-C ++现在可以工作了,Facebook的某人贡献了Go绑定,我们现在对其进行回顾。等)

python 2022/1/1 18:51:17 有407人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶