Juggernaut:网络浏览器中的神经网络
2017年11月10日 由 xiaoshan.xiang 发表
71048
0
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/
演示
演示页面使用户可以在开始训练会话之前定义一些选项。 这些选项是:
为了使演示页面更直观,更易于使用,在页面上有几个预定义的数据集,该数据集可以从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程序集(来源:http://caniuse.com/ #search= wasm)。
重要的是,演示页面使用单独的线程来训练和评估一个模型,并且不会阻塞Web浏览器的主线程或渲染线程。因此,在训练期间,你仍然可以与页面的UI元素进行交互,或者可以保持训练会话运行一段时间,直到从框架接收到准确评估为止。