2016 - 2024

感恩一路有你

tensorflow框架 Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?

浏览量:1241 时间:2021-03-15 19:23:31 作者:admin

Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?

对于那些使用了多种开发语言(Java、C#、nodejs、Erlang)然后转到Python进行机器学习的人,我想谈谈我的看法。

首先,Python真的很慢吗?我的回答是真的。非常慢。for循环比CPP慢两个数量级。

那么为什么要使用Python呢?如果我们遍历超过一亿个数据,两个数量级的差异是不可接受的。但是,如果我们使用Python来执行顶层逻辑并阻塞数以亿计的数据,Python只会循环十几次,剩下的就留给CPU和GPU了。所以两个数量级无关紧要?一毫秒和100毫秒在整个系统中并不重要。

Python最大的优点是它可以非常优雅地将数据抛出到高效的C、CUDA中进行计算。Numpy、panda、numba这些优秀的开源库可以非常方便高效地处理海量数据,借助ZMQ、cell等还可以做分布式计算,gevent借助epoll系统IO优化。因此,它不需要花费太多的精力就可以优雅高效地完成海量数据处理和机器学习任务。这就是Python如此流行的原因。

好好想想。同样的性能,代码只有CPP或Java的三分之一或更少,不是很吸引人吗?

数学好的人适合学哪种编程语言呢?

首先,好的数学,编程会容易得多。

我以前遇到过一门发展曲线良好的课程。它是数学学士学位、计算机硕士学位和经济学博士学位。很 完美

如果你有一个好的数学基础,你可以在学习编程的时候学习算法。当你学算术时,你能学什么语言?

R是目前最流行的统计分析和绘图软件,属于火炮项目的开放软件。

C作为一种高效的底层语言,积累了大量的数值算法库,也是数值计算不可缺少的语言。

目前,所有的机器学习算法都已经热销,深度学习的核心基本上都是用C/C编写的。例如,开源深度学习框架Caffe、pytorch/torch和tensorflow。

为什么Python是入行人工智能的首选语言?

人工智能是我的研究方向之一。目前我还在用Python做智能诊疗的落地应用。我将根据我的个人经验谈谈Python在人工智能中的应用。

我是从机器学习开始研究人工智能的,因为我以前一直在做大数据相关的研发,从大数据进入机器学习是很自然的。机器学习所要做的就是从无序的数据中发现规律,通过数据的采集和排序来训练算法,从而实现最终的应用。

由于我已经使用java很长时间了,当我第一次开始实现机器学习算法时,我的首选语言是java。毕竟编程语言只是一个工具,哪个工具好用,所以我总是用java来实现。直到有一次我参加了一个机器学习交流会,一位同行推荐我用Python来做机器学习。他告诉我Python做机器学习非常简单,你不必过多考虑语言实现,你可以专注于算法。

我花了大约一个星期的时间学习python,然后我开始在使用python时熟悉它。现在我们已经使用Python好几年了,可以说Python非常适合算法实现。一方面语法简单,另一方面可以使用的算法库非常丰富,而且程序可以快速调整,所以用Python做机器学习让我感觉轻松了很多。

目前,我的登陆项目也已经用Python完成了。虽然速度不如Java快,但从程序开发的角度来看,使用python确实很有趣。

Java能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行?

从语言设计的角度看,可以通过重新设计编译器来实现,但从工程实践的角度看是不可行的。

首先,Java语言最大的特点是跨平台的可移植性,一次开发,一次编译,多平台执行。这个特性是通过JVM(Java虚拟机)实现的。如果重写编译器直接编译成C语言这样的可执行程序,它将失去跨平台特性。

其次,Java语言在设计之初就被设计成严重依赖JRE(Java运行时环境)的语言。一些语言设计缺陷必须依靠JVM来解决,比如GC(垃圾收集)。我们知道Java语言没有内存恢复能力,所以我们不得不依赖JVM。在工程实践中,如果软件不能进行内存恢复,后果将是灾难性的。

第三,Java语言是面向对象的,不同于同样面向对象的C语言,Java还具有动态特性。

它允许程序动态加载运行过程中所需的类,这在面向对象编程中是C语言无法实现的。在C语言编程过程中,每次向类中添加实例变量或成员函数时,引用该类的所有子类都必须重新编译,否则会导致程序崩溃。Java从以下几个方面采取措施来解决这个问题。java编译器没有将对实例变量和成员函数的引用编译成数值引用,而是将符号引用信息保存在字节码中并传递给解释器,解释器在动态连接类后将符号引用信息转换成数值偏移量。这样,在内存中生成的对象不会在编译期间确定,而是延迟到运行时并由解释器确定。这样,更新类中的变量和方法不会影响现有代码。在解释和执行字节码时,只有在出现新名称时才执行一次符号信息的搜索和转换,然后才能全速执行代码。在运行时确定引用的好处是可以使用更新的类,而不用担心影响原始代码。如果程序连接到网络中另一个系统中的类,则该类的所有者可以自由更新该类,而不会使引用该类的任何程序崩溃。这完全取决于JRE。

以上几点决定了Java不能像C语言那样直接编译成机器代码。当然,还有其他一些因素,但我认为以上几点是最重要的。

tensorflow框架 tensorflow到底是什么 cpu需要cuda吗

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。