实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

转载 2017年12月27日 00:00:00
  • 标签:
  • 109
  • 编辑
  • 删除

翻译 | AI科技大本营

参与 | 王赫

上个月,我有幸结识了 DeepCognition.ai 的创始人。

Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框架和采用人工智能技术的机构打破了诸多难以逾越的障碍。

究竟什么是深度学习?

在我们说明Deep Cognition是如何简化深度学习和人工智能之前,先让我们定义一些深度学习的主要概念。

深度学习,它的核心是用连续"层状"结构来逐级递进的学习有意义的特征表示,其作为机器学习的一个特定的子研究领域,现已成为了一种新的从数据中抽取可学习特征表示的方法。

在深度学习中,由多个处理层构成的计算模块可以学习到具有多重抽象级别的数据特征。

这些层状的特征表示正是通过一个称为”神经网络”的模型来学习的,其结构依次层叠在一起。

实际上,我们在深度学习中使用的是一种称为人工神经网络(ANN)的东西。这个网络是受到生物神经网络的启发,用于估计或近似地趋近于一个依赖于海量未知输入变量的函数。

虽然,深度学习在机器学习中是一个相当古老的领域,但其在2010年初才开始渐渐显露锋芒。在此之后的几年里,深度学习取得了很大的成就。Francois Collet 在下面列出了其中的主要成就:

  • 接近人类水平的图像分类技术。

  • 接近人类水平的语音识别技术。

  • 接近人类水平的手写笔迹转录技术。

  • 经过改良的机器翻译技术。

  • 经过改良的文本到语音转换技术。

  • 数字助理,如Google Now或Amazon Alexa。

  • 接近人类水平的自动驾驶技术。

  • 经过改良的广告精准投放,如Google,百度和Bing所使用的。

  • 经过改良的搜索引擎结果。

  • 对自然语言问题解答。

  • 远超人类能力的游戏,如Go。

为什么深度学习如此的牛逼?

正如 François Collet 在他的书中所说的那样,直到21世纪后期,我们仍然没有可以训练非常深的神经网络的可靠方法。因此,当时的神经网络仍然很浅,只能用一到两层来表示,所以它们还不能挖掘出像SVMs或随机森林那样更加精细的浅层特征。

但在近十年以来,随着几个简单但又重要的算法的改进与发展、硬件(主要是GPU)的进步以及大数据的指数级积累,在现今深度学习的帮助下,你也可以在自家的笔记本电脑(或云端)上运行一个小型深度学习模型。

究竟该如何深度学习呢?

来看看我们通常是如何做深度学习的。

尽管这不是一个新的领域,但我们可以通过一种全新的方式与计算机进行交互来深度学习。而这个领域最重要的一个事件就是TensorFlow的创建。

TensorFlow是一个使用数据流图进行数值计算的开源软件库。数据流图中的节点表示数学运算,而图中的边表示在它们之间交流的多维数据阵列(张量)。

 什么是张量?

根据数学的定义,张量是由数字或函数构成的简单数组,它们按照一定的规则进行坐标变换。

但是从这个角度而言,张量可以是向量和矩阵向更高维度的泛化推广。 在TensorFlow的内部,张量被表示为基本数据类型的n维数组。

我们需要使用张量的原因是因为 NumPy(在Python里进行科学计算的基础软件包)缺乏创建张量的能力。 我们可以将张量与NumPy之间互相转换。 由于其构造早已明确的被定义为数组/矩阵,所以这是完全可能的。

通过结合了诸多优化编译技术的计算代数程序,TensorFlow使得运行许多难以计算的数学表达式变得非常简单。

Keras

虽然这不是一个关于TensorFlow的博客,何况网上有很多优质的TensorFlow资源帖子。但在本文中介绍一下Keras依然是很有必要的。

Keras是一个高级的神经网络API,它用Python编写,并且能够在TensorFlow,CNTK或Theano之上运行。 它的开发重点就是能够快速构建实验模型。 要知道,能够做好研究的关键就是能够尽可能快的从想法点子到最终实验结果。

这就是François Collet所构建该框架的初衷,也是为了让大众在深度学习面前能勇敢的迈出第一步。

TensorFlow本来有一个不复杂的Python API,但Keras可以更容易让很多人进入到深度学习领域中。 还应该提及的是,Keras现在已经正式成为Tensorflow的一部分:https://www.tensorflow.org/api_docs/python/tf/contrib/keras

深度学习框架

我对深度学习框架进行了比较。

Keras现在在流行度上优胜于其他框架,显而易见的可以看到人们更喜欢其简单的界面和可用性。

如果你想了解更多关于keras的信息,请访问我在LinkedIn上发布的帖子:https://www.linkedin.com/feed/update/urn:li:activity:6344255087057211393

Deep Cognition

因此,通常我们会进行深度学习编程,然后学习新的API。其中有些API要更复杂一些,也有一些是非常容易的,比如Keras。但是如何通过点击几个按钮就可以轻松创建和部署深度学习框架呢?

这就是Deep Cognition所许诺要达到的目标。

正如他们所说,Deep Cognition平台是为了“民主化AI”而建立的。

人工智能为世界的经济已经创造了巨大的价值。然而,AI企业在准备部署人工智能技术时所面临的巨大障碍也正是他们的(巨大)短板。 这就是Deep Cognition所正在解决的问题。

Deep Cognition的深度学习工作室平台可以采用云解决方案,也可以是在你的机器中运行的桌面解决方案(http://deepcognition.ai/desktop/)或者是企业解决方案(私有云或内部解决方案)。

桌面版本允许人们使用他们自己的电脑,并且无需为GPU付费。

为此,我们将使用Deep Learning Studio的云端版本,并使用单用户解决方案来创建和部署AI。简单的界面拖放就可以帮助您轻松设计深度学习模型。

预训练的模型以及使用内置的辅助功能可以简化和加速模型开发。 您可以导入模型代码并使用可视化界面来编辑模型。 当您迭代和调整超参数以提高性能时,平台会自动的保存每个模型版本。 您还可以通过比较不同版本的性能以找到最佳模型设计。

在 MNIST 数据集上使用 Deep Cognition 和 AutoML

Deep Learning Studio可以自动地为您自定义的数据集设计深度学习模型,这要归功于我们先进的AutoML功能。 您只需在几分钟内就可以启动并运行得到一个良好的模型结果。

没错!AutoML就是能随时实现你所想的,专门为深度学习而设计的自动化机器学习系统。它可以为你创建一个从原始数据到预测结果完整的流水线。

作为深度学习工作室的一个小教程,我们来研究一下经典的MNIST数据集。

MNIST是一个简单的计算机视觉数据集。 它由这样的手写数字图像组成:

它还包括每个图像的标签,这样就可以告诉我们它对应的是哪个数字。

运用Deep Cognition的云端工作室和AutoML功能,我们来训练一个可以查看图像并预测图像数字的模型。

如果你已经有一个帐户,你就只需要进入http://deepcognition.ai网页,然后点击启动云应用程序。

然后,你进入到用户界面,以及可以选择一些示例项目:

现在要做的是创建一个新的项目:

接下来的页面,您可以选择训练集-验证集-测试集的比率,加载数据集或使用已上传的数据集,指定数据的类型等等。

"模型"选项卡可以让您使用很多先进的深度学习功能以及不同类型的神经网络层来创建自己的模型,但是为了让Deep Cognition能处理所有的建模,我们将使用AutoML功能:

我们选择了Image,因为这是我们正要试图预测的数据类型。

在您点击"设计"之后,您就拥有了您的第一个深度学习模型,在此基础上可以进一步来自定义和分析:

模型看起来像这样:

所以,你可以看到在这个非常棒的平台下,深度学习所有复杂的建模过程和编程代码得到了显著的简化。

你也可以在平台内的Jupyter Notevook中进行编程,其中已经预安装了所有必要的程序软件:

配置神经网络非常困难的主要原因在于神经网络中有很多超参数需要设置。与任何其他机器学习算法相比,超参数的调参过程是神经网络中是最难的一部分。

但是在Deep Cognition中,调参可以非常简单且非常灵活的实现。在”超参数“选项卡中,您可以在几个Loss函数和优化器中进行选择来调整参数。

接下来是很有趣的一部分:训练模型。 在“训练”选项卡中,您可以从不同类型的实例(包括CPU和GPU)中进行选择。 它也将帮助您监控您的整个训练过程,并为您创建一个损失和准确率的图:

上面的gif小图就是训练过程

您可以在"结果"选项卡中查看到您所有的训练结果

最后,您得到了一个训练好的神经网络模型,它参考了测试集和验证集(或其他您已上传的)来训练的。您可以立刻使用这个模型并预测图像中的数字以查看它的表现如何。

黑盒问题

有时候在你会这样想:好吧,我正在深入学习,但我不知道它是如何做到的。

由于您实际上可以下载能够预测结果的模型代码,您将会看到它是用Keras编写的。然后您可以上传该代码并使用系统提供的notebook进行测试。

AutoML功能具有Keras和其他深度学习框架中的优秀功能,而且它的好处在于:只需轻轻一点,它就为您自动选择了最佳的深度学习框架实例,如果您对选择不满意,您还可以很轻松在图像界面下修改或者在notebook中交互式的更改。

这个系统平台建立的初衷是人人都可以轻松使用AI。为了构造一个复杂的模型,你并不需要一定是一个AI专家。但我的建议是,你需要对自己在做什么有了一个清晰的认识。你可以通过阅读TensorFlow或Keras文档,观看一些视频和关注相关资讯。如果你是这相关领域的专家,那就太棒了!这将使您的生活更加简单轻松,并且在构建模型时仍然可以运用您的专业知识。

请点击(阅读)下面的参考资料,以获取有关Deep Learning和AI的更多信息。

关于Favio Vázquez

物理学家和计算机工程师。 他拥有墨西哥国立自治大学物理科学硕士学位,现正在从事大数据,数据科学,机器学习和计算宇宙学等相关领域的工作。 自2015年以来,他一直是Apache Spark与Core和MLlib库的合作者。

他是Iron公司的首席数据科学家,主要负责执行分布式处理,数据分析,机器学习和指导数据项目。 此外,他在BBVA Data & Analytics担任数据科学家,工作范围包括机器学习,数据分析,以及使用Apache Spark维护项目和模型的生命周期。

参考文献

TensorFlow 101: Understanding Tensors and Graphs to get you started in Deep Learning *Introduction TensorFlow is one of the most popular libraries in Deep Learning. When I started with TensorFlow it felt

Deep Learning with Python The clearest explanation of deep learning I have come across...it was a joy to read.

leriomaggio/deep-learning-keras-tensorflowdeep-learning-keras-tensorflow - Introduction to Deep Neural Networks with Keras and Tensorflow

MNIST For ML Beginners | TensorFlowWe know that every image in MNIST is of a handwritten digit between zero and nine. So there are only ten possible…

Tutorial: Optimizing Neural Networks using Keras (with Image recognition case study) Introduction In my previous article, I discussed the implementation of neural networks using TensorFlow. Continuing the…

PacktPublishing/Deep-Learning-with-Keras Deep-Learning-with-Keras - Code repository for Deep Learning with Keras published by Packt

Latest Deep Learning OCR with Keras and Supervisely in 15 minutes Tutorial on how to build your own state-of-the art text recognition system

关键词:Machine Learning,Deep Cognition,Deep Learning,Artificial Intelligence

原文

https://medium.com/@favio.vazquezp/deep-learning-made-easy-with-deep-cognition-403fbe445351

实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 109 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCogn相关推荐

  1. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

    翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...

  2. 2017年12月6日 学习笔记(JAVA面试题)

    前段时间都在泡图书馆,看<java核心技术卷1>.感觉好多东西会用了,但是并不知道底层实现原理,还有好多没见过的知识点概念.觉得果然还是要多读书. 接下来准备边读书,边把各种面试题提及的知 ...

  3. 2017年3月27日上午学习日志

    2017年3月27上午复习了高等数学,继续看了张宇高等数学基础班课程视频第一章极限与连续部分极限的定义和极限的性质,第二遍听课过程中能巩固之前所学内容,不懂的问题得以解决,印象也更加深刻,对复习有很大 ...

  4. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  5. The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorf

    The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorfl ...

  6. 12月28日 OpenCV 实战基础学习笔记——疲劳检测

    文章目录 前言 一.眨眼疲劳检测 前言 本文为12月28日 OpenCV 实战基础学习笔记--疲劳检测. 一.眨眼疲劳检测 from scipy.spatial import distance as ...

  7. 12月19日 OpenCV 实战基础学习笔记——特征匹配

    文章目录 前言 一.特征匹配 1.Brute-force 蛮力匹配 2.1 对 1 匹配 3.k 对最佳匹配 二.答题卡识别 前言 本文为12月19日 OpenCV 实战基础学习笔记--特征匹配,分为 ...

  8. grafana mysql demo_通过官网模板轻松实现Grafana的可视化界面配置(以MySQL监控项为例)...

    MySQL 数据库 通过官网模板轻松实现Grafana的可视化界面配置(以MySQL监控项为例) 我们知道可视化是监控的一个重要环节,所以往往我们这个环节花费大量的时间和精力.可是如果可以借鉴前辈的经 ...

  9. 如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归。log

    如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归.logi ...

最新文章

  1. 官宣:图灵的 _____ ,只送不卖?
  2. web项目发布时出现Deployment failure on Tomcat 7.x.
  3. 服务器jar包配置文件,spring boot加载第三方jar包的配置文件的方法
  4. MyBatis-Plus 高级功能 —— 自动填充功能
  5. QT的QStringList类的使用
  6. 使用rsync工具构建php项目管理平台
  7. Go语言的类型系统 - 翻译
  8. 探究Lucene计算权重的过程
  9. 黑马博客——详细步骤(四)项目功能的实现之数据分页
  10. Postman下载与安装操作步骤【超详细】
  11. Redis文档--详解redis
  12. 大数据杀熟?我从银行数仓项目学到了什么
  13. 基于C语言设计的无边框背景透明窗体
  14. html图片显示不出来
  15. UVA11584划分回文串
  16. Be a Life-long Learner
  17. Matlab逆向归纳法,6.完全信息动态博弈—逆向归纳法和子博弈完美均衡.ppt
  18. JS 中 Object 的 keys 是无序的吗?
  19. 【mac m1 paddleOCR】安装环境及其坑位
  20. 金山免费词霸:谷歌金山词霸2.0

热门文章

  1. 事件控制块的清空与状态查询
  2. 字符集:ASCII、GB2312、GBK、GB18030、Unicode
  3. Java旅游项目线路收藏_基于JavaWeb的旅游项目--详情功能
  4. Linux is执行程序命令,linux命令执行过程详解
  5. android 之UI 高级控件Adapter(适配器详解)
  6. 使用显式Intent向下一个活动传递数据
  7. OnnxRuntime 性能调优
  8. 67. Add Binary
  9. MATLAB在人工智能中的应用案例:以MATLAB的方式玩转自动驾驶(附部分代码)
  10. 如何迅速成长成为一名数据分析师(都是干货)?