神经网络 3D 可视化框架 TensorSpace

码农软件 · 软件分类 · 神经网络/人工智能 · 2019-10-14 08:27:08

软件介绍

TensorSpace 是一套用于构建神经网络3D可视化应用的框架。 开发者可以使用类 Keras 风格的 TensorSpace API,轻松创建可视化网络、加载神经网络模型并在浏览器中基于已加载的模型进行3D可交互呈现。 TensorSpace 可以使您更直观地观察神经网络模型,并了解该模型是如何通过中间层 tensor 的运算来得出最终结果的。 TensorSpace 支持3D可视化经过适当预处理之后的 TensorFlow、Keras、TensorFlow.js 模型。

图1 - 使用 TensorSpace 创建的交互式 LeNet 模型

使用场景及特性

TensorSpace 是一个基于 TensorFlow.js、Three.js 和 Tween.js 开发,用于对神经网络进行3D可视化呈现的库。通过使用 TensorSpace,不仅能展示神经网络的结构,还可以呈现网络的内部特征提取、中间层的数据交互以及最终的结果预测等一系列过程。

通过使用 TensorSpace,可以更直观地观察并理解基于 TensorFlow、Keras 以及 TensorFlow.js 开发的神经网络模型。 从工业开发的角度来看,TensorSpace 降低了前端深度学习可视化相关应用的开发门槛。总的来说,TensorSpace 具有以下特性:

  • 交互 -- 使用类 Keras 的 API,在浏览器中构建可交互的3D可视化模型。

  • 直观 -- 观察并展示模型中间层预测数据,直观演示模型推测过程。

  • 集成 -- 支持使用 TensorFlow、Keras 以及 TensorFlow.js 训练的模型。

开始使用

图2 - TensorSpace 开发流程图

首先我们可以通过 NPM 或者 YARN 下载最新的 TensorSpace.js。

npm install tensorspace --save
yarn add tensorspace

TensorSpace.js 支持可视化基于 TensorFlow、Keras 以及 TensorFlow.js 训练的神经网络模型,不过在可视化这些模型之前,需要对模型进行适当的预处理,生成 TensorSpace兼容模型。针对不同的深度学习模型训练库,我们分别提供了相应的预处理教程 TensorFlow模型预处理教程Keras模型预处理教程TensorFlow.js模型预处理教程

接下来将通过快速构建一个3D的 LeNet 模型,来展示 TensorSpace 的开发流程。这个例子中要用到的所有代码文件和资源文件都可以在 TensorSpace Github 仓库的 examples/helloworld 文件夹下找到。同时为了着重展示如何使用 TensorSpace.js 的 API,我们提前使用 TensorFlow.js 训练了一个 LeNet模型,完成了预处理过程,并且准备了好了 预测数据

在使用 TensorSpace.js 的API 之前,需要在 HTML 页面中添加了 TensorSpace.js 及其依赖库(TensorFlow.js, Three.js, Tween.js, TrackballControl.js),然后创建一个 Div 作为 TensorSpace 模型的渲染容器。


在页面中添加以下 Javascript 代码,使用 TensorSpace.js 提供的 API 构建模型,载入经过预处理的模型,作出预测并展示。

// 创建 TensorSpace 模型  
let modelContainer = document.getElementById("container");    
let model = new TSP.models.Sequential(modelContainer);    

// 根据 LeNet 结构为 TensorSpace 模型添加网络层     
// Input + 2 X (Conv2D & Maxpooling) + 3 X (Dense)    
model.add(new TSP.layers.GreyscaleInput({ shape: [28, 28, 1] }));    
model.add(new TSP.layers.Padding2d({ padding: [2, 2] }));    
model.add(new TSP.layers.Conv2d({ kernelSize: 5, filters: 6, strides: 1 }));    
model.add(new TSP.layers.Pooling2d({ poolSize: [2, 2], strides: [2, 2] }));    
model.add(new TSP.layers.Conv2d({ kernelSize: 5, filters: 16, strides: 1 }));   
model.add(new TSP.layers.Pooling2d({ poolSize: [2, 2], strides: [2, 2] }));    
model.add(new TSP.layers.Dense({ units: 120 }));    
model.add(new TSP.layers.Dense({ units: 84 }));    
model.add(new TSP.layers.Output1d({        
    units: 10,        
    outputs: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]    
}));    

// 载入经过预处理的 LeNet 模型    
model.load({        
    type: "tfjs",        
    url: "PATH_TO_MODEL/mnist.json"    
});        

// 渲染模型并预测    
model.init(function() {        
    console.log("Hello World from TensorSpace!");        
    model.predict(data5);    
});

如果一切顺利,打开浏览器,将会看到如 图3 所示的模型。在构建完成模型后,可对模型进行交互操作,比如打开关闭网络层,控制3D场景视角等。

这个 LeNet 的 demo 同时被 host 了在 CodePen 中,点击这个 链接 到 CodePen 中在线体验一下吧~

图3 - LeNet 模型判别输入5

应用展示

这部分将展示一些基于 TensorSpace 开发的3D可视化神经网络模型实例。通过这些实例,可以体验不同的可交互模型,包括但不限于:物体分类、物体探测、图片生成等。我们希望通过展示这些模型实例,来更好、更直观地体现 TensorSpace 的应用场景、操作方法以及展示效果。

点击在线演示链接可以进入 TensorSpace 官网的 playground 查看对应模型的在线应用。考虑到部分模型的大小较大(例如:VGG-16 > 500MB,AlexNet > 250MB)以及网络加载速度,部分模型可能需要较长的加载时间。同时,为了有更好的 UI 交互体验,我们强烈建议在中型或者大型屏幕(宽度大于750px)中打开在线演示链接。

本文地址:https://codercto.com/soft/d/16718.html

Pattern Recognition and Machine Learning

Pattern Recognition and Machine Learning

Christopher Bishop / Springer / 2007-10-1 / USD 94.95

The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具