【学术】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 条评论
登录 后参与评论

相关文章

来自专栏深度学习思考者

Caffe for windows 训练minst和cifar-10

前言 今天刚看了看Theano,本来打算试着改改,再深入学习学习(这就是所谓的深度学习啊,亲们!哈哈)。由于扣扣好友在训练CIFAR-10数据集,所以就在昨天配...

2296
来自专栏君赏技术博客

【已解决】mas_updateConstraints更新约束引起的约束冲突

79DF33F7-1626-4FFD-9B01-1B115617F764

1182
来自专栏深度学习那些事儿

pytorch中读取模型权重数据、保存数据方法总结

pytorch中保存数据策略在长时间的深度训练中有很大的作用,我们可以通过保存训练好的权重,然后等到下次使用的时候再取出来。另外我们也可以通过迁移学习使用别人训...

2.8K8
来自专栏MixLab科技+设计实验室

自己动手做一个识别手写数字的web应用02

继续上文。 自己动手做一个识别手写数字的web应用01 01 再次进入docker容器 接着上一篇文章,我们继续使用上次新建好的容器,可以终端输入 : d...

3527
来自专栏MelonTeam专栏

Windows下Tensorflow的环境安装和Hello world

导语 深度学习 数字识别 Tensorflow 环境搭建 本人对深度学习是0基础,python也是没有用过,最近很流行深度学习,因此也想学习一下,...

2155
来自专栏AI研习社

一个应用于物体识别的迁移学习工具链

迁移学习指的是,通过对预训练模型的参数进行微调,将训练好的模型应用到相似或者只有细微差异的不同任务中。通过这个方法,我们可以基于一些性能顶尖的深度学习模型得到别...

1052
来自专栏Python小屋

Python使用系统聚类方法进行数据分类案例一则

首先解释一下为啥最近发的文章中代码都是截图而不是文本,这样做主要是希望大家能对着代码敲一遍而不是直接复制运行得到结果就算了,这样可以加深印象,学到更多东西。当然...

3604
来自专栏人工智能

基于自制数据集的MobileNet-SSD模型训练

“本文主要内容:基于自制的仿VOC数据集,利用caffe框架下的MobileNet-SSD模型训练。” 本文的base是https://github.com/c...

1.6K9
来自专栏瓜大三哥

图像分割(四)

图像分割(四) 之基于FPGA的局部自适应分割 子模块设计 窗口缓存模块win_buf 本模块不做任何算法上的处理,只是负责将当前输入像素的二维窗口元素缓存并组...

2158
来自专栏程序生活

TensorFlow教程(十二) 随机数实例

tf.random_uniform([4,4], minval=-10,maxval=10,dtype=tf.float32)))返回4*4的矩阵,产生于-10...

681

扫码关注云+社区