开启辅助访问
 找回密码
 立即注册

为什么人工智能用 Python?

yahoooo 回答数20 浏览数244241
苐5季 | 未知
因为py善长用十八般兵器,
但十八般兵器多数都是c系,
刀造的好不代表刀耍的好,
刀耍的好不代表枪玩的溜,
枪玩的溜不代表牛吹的飞,
而py就是传说中的除了造刀不太行,其它样样耍的都还不错,尤其是吹牛很溜的那个角色。


我就很喜欢。


谢谢。
回复
使用道具 举报
NLNQqwyU | 未知
Python到底有啥优势?
这个,Python还是有不少优势的:
    开源,跨平台。社区。不要小看这一点。社区意味着有很多教程、书籍,出了问题很容易google到,乃至更好的IDE支持。
运行速度没有Java,C++快
当然,你会说上面这些优势Java和C++也有。实际上,Java的社区可能比Python大,至少Java的IDE比Python强(你可以自行对比下IntelliJ和PyCharm)。
那么我们来说些Python独特的优势:
    语法设计的优雅。你可以说这些只是一些皮毛,无关痛痒。但这些皮毛其实是语言的“用户界面”。Java的语法是否优雅有争议,而C++的语法……内存安全性。人工智能开发不应该操心指针错误这样的问题。当然Java不存在这个问题。平滑的学习曲线。开发人工智能的人不一定都是程序员,很多学术界和从事数据分析的人并不熟悉C++。当然他们也可能不熟悉Python。但入门Python和入门C++的难度不可同日而语。表达效率。Java和C++还是比较啰嗦的。虽然说靠谱的IDE可以自动生成代码,但这只是节省了打字的开销,而代码大部分时间是用来读的,而不是用来写的。历史积累。人工智能涉及很多科学计算、数据可视化的任务。这方面,Python有非常优质的库,比如,numpy和pandas在别的语言里没有级别相当的替代品。
另外,速度其实并不是一个大问题。因为实际上你不一定真的在写Python.
比如,我们看以下TensorFlow代码的示例:
  1. [/code]上面这段代码,明显是Python(这还用说?)。
  2. 但是,仔细看看,真的是Python吗?
  3. 实际上,这些代码[b]构建了一个图m[/b],然后通过tf.Session()的run方法[b]运行了图m[/b]。
  4. 下面一段代码可能更明显,我们想迭代数据集dataset,在TensorFlow下需要这样写:
  5. [code]
复制代码
我们看到,我们不能直接使用Python迭代数据集,而要通过TensorFlow提供的方法构建迭代器
这一情况可以类比使用Python访问SQL数据库:
  1. [/code]这里,我们构造了SQL请求语句,然后通过Python“执行”(execute)这些语句。表面上你在写Python,其实关键的逻辑在SQL语句里。更准确地说,你是在用Python构造SQL语句,然后运行构造的语句。这称为[b]元编程(meta programming)[/b]。
  2. 同理,在TensorFlow下,表面上你在写Python,其实关键的逻辑都在TensorFlow图里。更准确地说,你是在用Python构造TensorFlow图,然后运行构造的图。
  3. 实际上,2017年万圣节(10月31日),Google发布了TensorFlow Eager Execution(贪婪执行),让你可以直接使用Python编程,而不是使用Python元编程TensorFlow图。
  4. 使用Eager Execution,上面两段TensorFlow代码可以改写为:
  5. [code]
复制代码
你看,TensorFlow明明可以“好好地”用Python编程的嘛。之前为什么要这么大费周折地绕一个圈子?
因为性能
机器学习,尤其是现代的复杂模型,有着极高的算力需求。TensorFlow图可以很好地应对贪婪的算力需求,而Python则对此力不从心。
TensorFlow图专门针对机器学习的需求设计,所以可以很好地优化,以提升性能。
所以说,你其实大部分时间是在用Python进行元编程,并不需要操心Python的性能问题。
当然,天下没有免费的午餐。为了更好地优化,TensorFlow图对模型有着许多假设(这些假设从另一方面来说也是限制),也要求构造、运行分阶段进行(静态图模型)。这影响了模型的灵活性和表达力。
而像PyTorch这样支持动态图模型,更Pythonic的框架,为了优化性能可以说是煞费苦心,但仍有不足。
所以,Google Brain挖了Swift之父Chris Lattner做Swift For TensorFlow(上个月底刚刚开源),就是为了兼顾性能和灵活性。
Swift For TensorFlow对动态图模型代码进行分析,自动生成对应的TensorFlow图程序。

图程序提取(黄色方框)是Swift For TensorFlow的关键技术
上图中的model.swift没法换成model.py,因为Python那一大堆动态特性,使得Python无法被可靠地静态分析。
顺便说下题主关心的Java和C++。
model.java也不行,因为Java虽然是静态语言,但动态分发(dynamic dispatch)非常普遍。换句话说,Java主要的高层抽象手段,类和接口,都高度依赖动态分发。
model.cpp也许可以。但是,基于前面说过的C++的问题,C++没有机会。
总之,Python有一些主客观优势,再加上一些历史因素,成为当前人工智能的主流语言。但优势还没有大到和人工智能是“天作之合”的程度。而以后随着人工智能技术的发展,Python也未必能保持这个AI/ML主流语言的地位。
没有说人工智能要钦定Python,没有任何这个意思。但你一定要问Python到底有什么优势,它现在是人工智能的主流语言,怎么能没有优势?
回复
使用道具 举报
tianya0801 | 未知
近年来,IT行业迎来了一个大的人才缺口,尤其是“大数据”“云计算”“人工智能”等等科技的兴起,程序员在30岁以后往往都会遇到开发瓶颈期,人工智能是个不错的调整方向。
        当你确定好转人工智能时,问题就来了,你不知道该如何入手,你去网站收集各大网站的免费教学视频,书籍推荐买了许多本,真正看完的三分之一不到,既学不会又浪费时间,想自学的人比比皆是,但是真正靠自学成AI高技术人才的寥寥无几。

怎么学习

学习高等数学基础知识
首先,你是零基础的话,就先将高等数学基础知识学透,从基础的数据分析、线性代数及矩阵等等入门,只有基础有了,才会层层积累,不能没有逻辑性的看一块学一块。
学习Python

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。这也是人工智能必备知识。
机器学习属于人工智能的一个分支,它是让机器能具备摆脱对人工指令的依赖,能按照一定的算法开展自主学习的能力,它的出现才真正让“人工智能”不枉智能二字。
所以,未来5到10年,整个人类社会都会迅速朝这个方向演进。
如果我们个人想顺应这个潮流,我建议应该快速切入python的学习。
为什么说要学习Python

因为无论是大数据分析,还是机器学习,python都有很强大的支持能力。

从中可以看出,python代表了适应未来的一种趋势。
python作为脚本语言,它本身具备了一般脚本语言的诸多优点,如:易上手,即写即能运行,易读,易维护等,同时它经过十多年的发展,目前能支持的领域非常广大,按照《python学习手册》作者的说法,python可以从支持航空航天器系统的开发到小游戏开发的几乎所有的领域。
这最根本还是来源于它一开始的开源策略!
Python在另一方面是不同的: 它更多样化
鉴于Python不仅是一种通用的编程语言,而且也是一门 科学的编程语言,我们很快就会看到Python在更高的薪水方面接管了Ruby ,挣得更多。
Python是AI和机器学习的未来。

[code][/code]6节课掌握Python爬虫视频
链接:https://pan.baidu.com/s/1eTT4AYm 密码:6d75


6节课入门Flask框架web开发
链接:https://pan.baidu.com/s/1htLsTSg 密码:fbwr


6节课机器学习入门
链接:https://pan.baidu.com/s/1htUM1l6 密码:3nrz
回复
使用道具 举报
suren.bai | 未知
Python在拥有简洁的语法和丰富的生态环境从而提高开发速度的同时,对C的支持也很好,这使得它在速度上其实也不是很逊色。如果用原生的对象或方法,非常非常地慢,但用了numpy的一套对象和方法,就完全不一样了,很快。正如你拿二重列表和numpy的二维ndarray做矩阵乘法,速度差几个数量级。就是因为numpy的底层几乎全是C。
这样,python结合了语言的优点,又通过对C的高度兼容弥补了速度慢的缺点,自然受到数据科学研究者与机器学习程序员的青睐。
回复
使用道具 举报
flyer_b | 未知
难道不是因为Google是典型用c++加python的公司吗?


回复
使用道具 举报
moonlightplay | 未知
首先明确一下,python主要是做为“前端”语言用于人工智能场景,后端实现主要是还是C/C++。但几乎所有主流的机器学习/深度学习框架都提供python接口,主要有两个原因:
    python有很多优秀的基础框架可用于机器学习/深度学习。比如numpy、scikit-learn等待。python是动态语言,可以快速的实现研究和原型开发。 人工智能80%的时间是在做研究,如果每次都写50000行Java代码来验证新的假设,那么你将永远无法完成该项目。 在Python中,几乎每个想法都可以通过20-30行代码快速验证。
回复
使用道具 举报
sminchy | 未知
因为用的人多了,所以用的人就多了
回复
使用道具 举报
泥鸠 | 未知
谷歌的TensorFlow基本上所有的代码都是C++和Python,其他语言一般只有几千行 。如果讲运行速度的部分,用C++,如果讲开发效率,用Python,谁会用Java这种高不成低不就的语言搞人工智能呢?Python虽然是脚本语言,但是因为容易学,迅速成为科学家的工具(MATLAB也能搞科学计算,但是软件要钱,且很贵),从而积累了大量的工具库、架构,人工智能涉及大量的数据计算,用Python是很自然的,简单高效。Python有非常多优秀的深度学习库可用,现在大部分深度学习框架都支持Python,不用Python用谁?人生苦短,就用Python。
回复
使用道具 举报
小詠。 | 未知
只是给Python提供一个接口,因为Python用户的基数太大了。后台的核心运算都是C++写的。
回复
使用道具 举报
v1guanjian | 未知
因为python写起来几乎就像是伪代码啊。。。。
在脑子里都是公式、算法的时候,还要仔细去想“这块内存会不会泄露?”、“这个对象是啥类型的?”太痛苦了。


写snippet讲究的是思维的连贯性。。。。
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影