【学术】Juggernaut:网络浏览器中的神经网络

Juggernau是一个用Rust编写的实验性神经网络。它是一个使用梯度下降来拟合模型并训练网络的前馈神经网络。Juggernaut使我们能够构建网络应用程序,以在网络浏览器的语境中训练和评估神经网络模型。这是在没有任何服务器或后端的情况下完成的,并且没有使用Javascript来训练模型。

  • Juggernaut地址:https://juggernaut.rs/
  • Rust地址:https://www.rust-lang.org/

Juggernaut的开发者友好的API使交互变得很容易。可以将数据集从CSV文件传递给Juggernaut,或者使用编程API将文件添加到模型中,然后请求框架进行训练。

Juggernaut实现了大部分的激活函数以及一些不同的成本函数,包括Cross Entropy。

Juggernaut有一个用React和D3.js编写的演示页面,解释了训练期间的网络,权值和损失。

演示页面地址:https://juggernaut.rs/demo/

演示

演示页面使用户可以在开始训练会话之前定义一些选项。 这些选项是:

  • 数据集
  • 学习率
  • epoch的数量(迭代)

为了使演示页面更直观,更易于使用,在页面上有几个预定义的数据集,该数据集可以从CSV文件中加载和显示数据点。每个数据集有3个类,橙色,蓝色和绿色以及2个特征X和Y。

选择数据集并定义选项后,你可以点击页面上的“训练”按钮开始训练。 点击这个按钮会产生一个新的线程(工作线程),并将数据集和参数传递给创建的线程。

在训练期间,你可以看到网络的epoch的数量,损失和权值。工作线程与浏览器的主线程进行通信,并将结果发送回渲染线程以可视化每一步的训练。

在应用程序中的层数是预定义的。我们有一个输入层,两个隐藏层和一个输出层。 对于隐藏层,我们使用ReLU激活函数,输出层使用具有交叉熵成本函数的Softmax。

编译Rust到Web程序集

Juggernaut的演示页面使用Web程序集和HTML5工作线程,以在网络浏览器的语境中产生一个新线程,并在工作线程和浏览器的渲染线程(主线程)之间进行通信以训练和评估模型。

下面是编译Rust到Web程序集的过程:

Web程序集地址:http://webassembly.org/ 编译Rust到Web程序集地址:https://www.slideshare.net/RReverser/rust-javascript

Juggernau不使用任何类型的Javascript代码来训练和评估模型。但是,在大多数网络浏览器没有任何后端服务器的情况下,Juggernaut仍然有可能运行在现代网络浏览器上,包括在Android和iOS上的IE 11和可移植的web浏览器,支持web程序集。

重要的是,演示页面使用单独的线程来训练和评估一个模型,并且不会阻塞Web浏览器的主线程或渲染线程。因此,在训练期间,你仍然可以与页面的UI元素进行交互,或者可以保持训练会话运行一段时间,直到从框架接收到准确评估为止。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小黑屋

Mac为外接显示器调出更多分辨率

最近开始使用媳妇的MBP写代码,接上了买了有一段时间的可以竖屏的戴尔显示器,本以为可以开心写代码了。结果发现还是有问题。

533
来自专栏SDNLAB

SDN世界里,网工需要哪些技能?

网络工程师需要学习新技能和使用自动化工具才能适应软件定义网络(SDN)的工作环境。 听起来似乎很难,但是网络工程师都很聪明。我们往往必须处理一些大型复杂网络,它...

3348
来自专栏ATYUN订阅号

人脸图像识别实例:使用Keras-MXNet在MXNet模型服务器上部署“笑脸检测器”

AWS最近宣布发布了针对Keras 2的Apache MXNet后端,与使用多GPU的默认后端相比,它可以为你提供高达3倍的速度提升。它可以改进训练和推理性能。...

862
来自专栏喵了个咪的博客空间

phalapi-进阶篇1(Api,Domain,和Model)

#phalapi-进阶篇1(Api,Domain,和Model)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个...

3387
来自专栏Golang语言社区

【Go 语言社区】把Go程序变小的办法

把Go程序变小的办法是: go build -ldflags “-s -w” (go install类似) -s去掉符号表(然后panic时候的stack tr...

3496
来自专栏强仔仔

利用JQuery实现从底部回到顶部的功能

今天给大家介绍一下如何利用JQuery实现从任意地方返回顶部的功能,现在大部分网站因为篇幅比较长,所以都会设置这么一个按钮,利用这个按钮可以实现从底部返回顶部的...

1847
来自专栏专知

【前沿】Pytorch开源VQA神经网络模块,让你快速完成看图问答

【导读】近期,NLP专家Harsh Trivedi使用Pytorch实现了一个视觉问答的神经模块网络,想法是参考CVPR2016年的论文《Neural Modu...

2628
来自专栏java工会

Java编程新手入门要多久

1214
来自专栏小石不识月

如何将机器学习模型转移到产品中

针对于特定问题(例如自然语言处理,即 NLP,或图像识别)的深度学习模型开发、训练和调参,需要耗费时间与资源。这通常还包括使用功能强大的处理器来训练大型数据集上...

1072
来自专栏全栈工程师成长之路

深入浅出学习后端开发(PHP篇)

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

48512

扫描关注云+社区