五个常见 AI 开发库

上一篇文章已经写过了,人工智能的发展不可谓不曲折,三起两落,不同的历史阶段,主流的研究方法不一样,开始时的 if-else 结构,简单的逻辑判断字符串匹配,到后期的穷举计算等,慢慢发展到现在的大数据与深度学习相结合的主流研究方法,逐渐体现出了较大的优势,同时也涌现出了不同的深度学习(机器学习)框架,以下挑选五种主流的框架进行介绍进行对比分析,以供大家参考使用:

  1. TensorFlow:推荐指数 ☆☆☆☆☆

    TensorFlow 可谓大名鼎鼎,是 Google 大脑团队开发的深度学习框架,Google 现有产品几乎都使用到了 TensorFlow,比如 Google 的邮件、搜索、语音识别和相册等,无一例外。现在的 TensorFlow 版本已经是 TensorFlow 2 了,较之前的版本有了更大的更新。TensorFlow 核心是由 C 和 C++ 语言编写,但是其提供了几乎完整的 Python 接口支持,可以非常方便的进行系统的构建,同时根据不同的情况,也提供了极其丰富的各平台支持,对于移动端,有 Lite 版本用于 iOS、Android 和 IoT 设备,还有 JavaScript、nodejs、go语言,甚至还有微信小程序的相关支持,在其官网和 GitHub 都有比较详细的文档和实例。其优势也相对明显,有 Google 去保证其质量和后期维护,社区和流行度也比较普及,因此算是学习和使用性价比较高的框架。
  2. Keras:推荐指数 ☆☆☆☆

    Keras 是一个 Python 深度学习库,是一个相对高级的神经网络 API,其本质是对 TensorFlow(Google)、CNTK(微软) 和 Theano 的封装,可以快速的进行实验。以上是 Karas 官网对其自己的定义,确实它在原型设计和 Demo 实验阶段表现突出,它有很多的工具,在可视化、神经网络模型结构和数据的处理方面都非常好用,是一个需要熟悉和掌握的深度学习框架。
  3. PyTorch:推荐指数 ☆☆☆☆☆

    PyTorch 是另外一个极其重要的机器学习框架,是 Facebook AI 研究实验室基于 Torch 开发的,Torch 是基于 C 开发Lua 封装的,它的优势是 GPU 支持相对其他框架更好一些,代码写起来更像 Python。他跟 TensorFlow 最大的区别是 TensorFlow 用的是“静态计算图”,PyTorch 用的是“动态计算图”,也就是在运行过程中是否可以改变模型整体计算图,这一点在后续的文章中会再次说明。
  4. NumPy:推荐指数 ☆☆☆☆

    这也是一个非常流行的 Python 机器学习的库,TensorFlow 和其他的许多库都使用了 NumPy 作为他们功能的一部分,对于多维数组对象,线性代数,傅里叶变换和较强的随机数能力表现都比较突出,值得了解一下,如果有需要更可以深入去学习使用。
  5. scikits-learn:推荐指数 ☆☆☆☆

    这也是一个机器学习的 Python 库,它在处理复杂数据方面能力较强,包含大量的机器学习任务和数据挖掘任务的大量的算法,降维、分类、回归、聚类等各种模型,非常方便。在数据挖掘领域应用较多,也是一个值得深入学习和研究的机器学习库。

上面仅仅推荐了五个人工智能相关的库,准确点更应该说是机器学习或深度学习的框架,从流行程度来看,我们也大致能得出现在主流的人工智能领域研究方法也是深度学习和机器学习。这些库在不同领域和不同方面优势各不一样,本文推荐指数推荐依据,是根据适用场景和学习使用性价比主观推荐,请读者根据需求自行取用。

本公众号后续文章将主要基于 TensorFlow 2 进行学习说明。

原文地址:https://www.cnblogs.com/renyuzhuo/p/12222524.html

时间: 2024-10-10 13:38:09

五个常见 AI 开发库的相关文章

UI标签库专题五:JEECG智能开发平台 Tabs(选项卡父标签)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

php中五种常见的设计模式

设计模式 一书将设计模式引入软件社区,该书的作者是 Erich Gamma.Richard Helm.Ralph Johnson 和 John Vlissides Design(俗称 “四人帮”).所介绍的设计模式背后的核心概念非常简单.经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板.使用这些模板或者说设计模式 意味着可以更快地设计更好的建筑物.同样的概念也适用于软件. 设计模式不仅代表着更快开发健壮

[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).windows上该环境的搭建 :) 前面三篇博客代码实现均基于该环境(开发或者测试过): [AI开发]Python+Tensorflow打造自己的计算机视觉API服务 [AI开发]基于深度学习的视频多目标跟踪实现 [AI开发]视频多目标跟踪高级版 运行环境 1) centOS 7.5 ,不要安装GUI桌面:

第三方苹果开发库之ASIHTTPRequest(翻译版)

本文转载至 http://www.cnblogs.com/daguo/archive/2012/08/03/2622090.html 来自:http://www.dreamingwish.com/dream-2011/apples-third-party-development-libraries-asihttprequest.html 第三方苹果开发库之ASIHTTPRequest ASIHttpRequest库简介.配置和安装 ASIHttpRequest-创建和执行request ASIH

javaweb学习总结(二十五)——jsp简单标签开发(一)

一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口来实现标签的功能. 实现SimpleTag接口的标签通常称为简单标签.简单标签共定义了5个方法: setJspContext方法 setParent和getParent方法 setJspBody方法 doTag方法(非常重要),简单标签使用这个方法就可以完成所有的业务

【转载】HTTP/FTP客户端开发库:libwww、libcurl、libfetch

网页抓取和ftp访问是目前很常见的一个应用需要,无论是搜索引擎的爬虫,分析程序,资源获取程序,WebService等等都是需 要的,自己开发抓取库当然是最好了,不过开发需要时间和周期,使用现有的Open source程序是个更好的选择,一来别人已经写的很好了,就近考验,二来自己使用起来非常快速,三来自己还能够学习一下别人程序的优点.闲来无事,在网上浏览,就发现了这些好东西,特别抄来分享分享.主要就是libwww.libcurl.libfetch 这三个库,当然,还有一些其他很多更优秀库,文章后面

APUE学习笔记:第五章 标准I/O库

5.1 引言 标准I/O库处理很多细节,例如缓冲区分配,以优化长度执行I/O等.这些处理不必担心如何使用正确的块长度.这使得它便于用户使用,但是如果不较深入地了解I/O库函数的操作,也会带来一些问题 5.2 流和FILE对象 对于ASCII字符集,一个字符用一个字节表示.对于国际字符集,一个字符可用多个字节表示.标准I/O文件流可用于单字节或多字节字符集. 流的定向决定了所读.写的字符是单字节还是多字节的.当一个流最初被创建时,它并没有定向.如若在未定向的流上使用一个多字节I/O函数,则将该流的

移动AI开发生态争夺战|手机AI旅行地图<三>

让我们回想一下那遥远的过去,是什么原因决定了我们抛弃小板砖一样的功能机,选择智能手机的?是因为颜值?交互新鲜感?我相信绝大部分用户,是因为APP模式带来了太多实用价值,身边的人都用上了,自己甚至没法不跟进.所以乔帮主的伟大之处,不仅在于颠覆了手机的形态,更重要的是给未来手机的生态打开了入口.直到今天其能量与想象力也远没有耗竭.等到手机AI时代拉开序幕,这个逻辑似乎依旧通用.毕竟AI算法的特征就是千奇百怪,做什么的都有. 有人用AI做医疗,有人用AI当客服,甚至还有人用AI预测死亡时间,如何把这些

javaweb学习总结(十一)——自定义标签开发库

一.自定义标签开发库简介: Tag接口的方法:   二.自定义标签入门:输出客户机ip 1.编写一个实现tag接口的java类 ViewIPTag.java 1 package com.web.tag; 2 3 import java.io.IOException; 4 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.jsp.JspException; 7 import javax.servlet.js