为什么Python运算慢还拿来搞AI?这三点大多数都不知道?

首先慢是相对的。之前大家对python慢的理解,其实是因为那时候的机器资源有限,相对于c/c++这样可以直接操作内存的语言,python需要占用更多的内存,因此会慢。但是现在机器硬件成本已经可以忽略的年代,python与c/++差距在逐渐缩小。

另外就效率而言,其实是分两方面的。一方面是人编写代码的时间,另一方面才是代码的机器上执行的时间。如果说python在机器上执行的时间不慢,还略有争议的话,那么在写代码这个方面来讲,python则有绝对的绝对优势。

python是更高级的语言,它简单易学,即使是没有编程基础的人,可能有个一两天也就掌握了它的语法,就可以上手直接写,而不需要像c/c++语言那样需要学很多东西还要知道操作内存的知识。python有很多很成熟的开发包(老牌的sk-learn了,新兴的tensorflow),用于机器学习,这些都是他在开发效率方面的优点。

其次,对于小程序、探索性开发、算法测试等情况,Python和高性能语言区别并不是特别大。比如假设Python写一个任务需要耗时20秒,而C语言仅需要10秒,这个差距真的可以忽略不计。而现实情况,我们大部分时间都是在做这类探索或测试。心中有一个想法时,马上就会想到用Python去实现,然后不断地调试参数,让算法最优。假如用C语言来做这个工作,那花在改代码上的时间是非常长的,甚至容易分散注意力,将注意力不是放在算法本身而是去写一堆晦涩代码去了。matlab对算法探索似乎更快,不过它是收费的,不是开源的,第三方库已经跟不上时代节奏了。

第三,对于大型深度学习,数据挖掘任务,Python做的仅仅是算法描述。上面一点我们说的其实是开发环境(或实验环境)。那么在生产环境,也就是说真正做大型任务(而不是算法建模)时,Python也不差。这是为什么呢?拿tensorflow的深度学习来说。它的核心是用C/C++写的,但是在写代码时,基本上全是Python,这时候Python仅仅是充当算法脚本的功能。说具体点,一个深度学习通常是一个大型的神经网络,用Python去定义每一层网络,每一个激活函数以及其他各种网络参数。这时候Python是有些慢的,比如初始化就要5秒,加载各种神经网络参数又要5秒,读取和解析原始数据要500秒。但是,还有更长的,那就是训练。训练说不定要10个小时,你没有看错,是小时。而这10个小时基本上全是由C++去完成的。所以说Python引起的那几百秒延迟根本不值一提。核心部分依然是交给了C++。说穿了,Python只是做了前期的准备工作,告诉内核:数据是什么,应该如何训练,应该如何评估结果,以及结果如何展示出来。而至于具体的操作就不是Python要做的事了。这和我们用Photoshop画一个图一样的,使用者用鼠标键盘就能作出一个优秀的产品。甚至一行代码都不用写。这个鼠标键盘就好比我们的Python。我们程序员用Python做AI就好比美工用键盘鼠标画图一样。实际上关键核心性能部分都是清一色的C/C++。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181120A0FS1X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券