三种Js深度学习框架介绍

更新日期: 2019-08-19阅读: 3.9k标签: 框架

谈到机器学习,我们脑海首先蹦出的编程语言是什么?一定是python。其实除了python,Javascript也是不错的选择。都说现在是大前端时代,从移动开发、服务器端,甚至桌面软件开发(比如大名鼎鼎的VS Code),都有Javascript的身影。  

用Javascript写机器学习应用,当然不会从头开始手写机器学习算法和模型,通常会借助现有框架。我之前接触的都是TensorFlow.js,其实除了TFJS,还有其它的深度学习框架。下面就介绍三种常用的Javascript深度学习框架。


TensorFlow.js

Tensorflow.js是业界的大哥大,Google出品,值得信赖。其实TensorFlow.js发布得很晚,到2017年中期才公开发布第一个beta版本,其前身是Deeplearn.js。不过TensorFlow.js是第一个在浏览器中提供硬件加速的开源深度学习框架,它利用了WebGL进行加速。

在浏览器中的机器学习,用户可以直接在浏览器中提供数据,进行实时训练学习,而不用额外安装软件。TensorFlow.js也无需用单独的深度学习框架构建离线的模型,随着浏览器对硬件能力的支持度越来越高(比如摄像头、麦克风等),我们可以在浏览器中运行越来越丰富的机器学习应用。


WebDNN

WebDNN是由东京大学的机器智能实验室开发的,虽然它没有TensorFlow.js那么流行,但是它支持更多种类的深度学习框架:

  • TensorFlow

  • Keras

  • PyTorch

  • Chainer

  • Caffe

如果你已经有了这些深度学习框架的模型,你可以用WebDNN很容易地导入这些模型。WebDNN有一个优化器管道,它看似一个编译器,将一个训练模型转换为一个WebDNN的中间表示的格式。在WebDNN优化中间表达之后,优化过的模型生成一个核操作图

WebDNN也能通过WebGL进行硬件加速,如果你的浏览器支持WebAssembly和WebGPU,还可以通过这些api加速。

TensorFlow.js和WebDNN的主要不同在于WebDNN只支持任务的推断阶段,而不能用在训练阶段。因此除了WebDNN,你还要熟悉前面介绍的几种深度学习框架之一。我们可以将WebDNN看做一个优化器,它能让预训练的模型在浏览器上运行得更快。

你可以使用pip安装WebDNN:

$ pip install webdnn


Keras.js

Keras.js只支持Keras生成的模型,但因为Keras本身支持多种深度学习框架后端,所以Keras.js间接支持Keras支持的深度学习框架后端,比如Tensorflow、CNTK、MXNet等。

像TensorFlow.js一样,Keras.js实现各种核函数。Keras.js同样不支持模型训练,所以你需要为Keras.js准备预训练模型来创建应用。

Keras.js可以运行在独立于主线程外的WebWorker,这可以避免阻塞渲染UI,对于提升良好的用户体验至关重要。

Keras.js提供很多使用的例子,你可以访问:https://github.com/transcranial/keras-js.git 了解更多。


小结

三种Javascript深度模型框架之中,TensorFlow.js无疑是最流行的框架,无论是从功能、社区支持还是活跃度上,都碾压其它两个。但其它两个也各有特点,支持的后端框架更多,支持更多的模型类型,更容易和已有的资源整合。重要的是哪种工具适合哪类问题,深度学习框架还很年轻、不成熟,希望在看完这篇文章之后,可以帮助你更好的选择深度学习框架。


链接: https://fly63.com/article/detial/6516

Angular、Vue、React 和前端的未来

越来越多的人开始站队 Angular、Vue、React,仅仅围绕这些库或者框架进行前端技术讨论,这实在不是什么好的现象。其实我想基于我个人的经验聊下前端的演进和未来,希望可以贡献微薄的力量,消除一些我个人认为的前端社区不太好的风气。

JavaScript 框架的探索与变迁

近几年可谓是 JavaScript 的大爆炸纪元,各种框架类库层出不穷,它们给前端带来一个又一个的新思想。从以前我们用的 jQuery 直接操作 DOM,到 BackboneJS、Dojo 提供监听器的形式,在到 Ember.js、AngularJS 数据绑定的理念,再到现在的 React、Vue 虚拟 DOM 的思想。

新框架(新工具,语言)从入门到精通的正确姿势

新框架(新工具,语言),一、了解概念,把握思路,二、迅速实战,见招拆招,三、深入文档,求人不如求己,四、掌握原理,有恃无恐,五、源码分析,自立门户。如果你已经熟悉一门计算机语言,当再学习其他语言的时候,会发现他们几乎是大同小异,对比着学习,会令你事半功倍。

现代 js 框架存在的根本原因

我曾见过很多很多人盲目地使用(前端)框架,如 React,Angular 或 Vue等等。这些框架提供了许多有意思的东西:它们支持组件化;它们有强大的社区支持;它们有很多(基于框架的)第三方库来解决问题;它们有很多(很好的)第三方组件;它们有浏览器扩展工具来帮助调试;它们适合做单页应用。

Uber开源Fusion.js:一个基于插件架构的通用Web框架

Web 技术变化得很快,而最佳技术实践也在不断发展。Uber 的 Web 平台团队开发了 Fusion.js,一个开源的 Web 框架,用于简化 Web 开发,并构建出高性能的轻量级 Web 应用程序。

web前端框架选择_前端框架是解药还是毒药?

要使用现代的前端框架,你需要下载开发环境和依赖,编译代码,然后在浏览器上运行。这个是好是坏?究竟是什么导致了这种不必要的复杂性?是因为我们构建的网站太复杂,还是因为框架本身就很复杂?

前端框架选型

有一个流传较广的笑话,一个人在stackoverflow中提了一个问题,如何使用javascript实现一个数字与另外一个数字相加。最高票回答是你应该使用jQuery插件,jQuery插件可以做任何事情。 历史总是在重演,以前是jQuery,现在可能是react或vue。不同的框架有不同的应用场景,杀鸡不要用牛刀

基于wsgiref模块DIY一个web框架

Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法

Ionic 框架宣布 2019 年将正式支持 Vue 和 React

Ionic 是一个高级的 HTML5 移动端应用框架,也是一个开发混合移动应用的前端框架,旨在让 Web 开发者更轻松地构建、测试、部署和监控跨平台应用。Ionic 基于 Angular 语法,之前一直不支持 Vue 和 React 。

Nancy_轻量级的Web框架

最近想找一个简单的.Net下的轻量级Web框架,作为用户的本地的一个WebServer,实现同浏览器程序的一些简单交互,并调用本地服务,实现类似浏览器插件的功能。它有如下几点要求:

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!