TensorSpace.js
开始使用
基本概念
TensorSpace Converter
模型预处理
模型
网络层
网络层融合
构建图结构
在 TensorSpace 中,可以通过构建 TensorSpace 图建构来重建预训练网络的图结构,并且定制 3D 可视化效果。根据不同的 TensorSpace 模型种类,有不同的图结构构建方式。
构建顺序模型图结构
TensorSpace 顺序模型和 Keras 中的顺序模型有着相似的概念 -- 多个网络层的线性堆叠。在 TensorSpace 中,我们可以使用顺序模型的 .add() 方法来将 TensorSpace Layer 添加到模型中,TensorSpace 将会在初始化阶段自动构建出 Layer 栈。
举个例子,如果想要构建如下 LeNet 顺序模型结构:
图1 - 顺序图结构
使用以下代码进行构建:
let model = new TSP.models.Sequential( modelContainer );

model.add( new TSP.layers.GreyscaleInput() );
model.add( new TSP.layers.Conv2d() );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Conv2d() );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Output1d( {
    outputs: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]
} ) );

model.load({
  // ..Loader configuration
});

model.init();
构建函数模型图结构
TensorSpace 函数模型和 Keras 中的函数模型有着相似的概念 -- 可用于定义复杂模型。在 TensorSpace 中,我们可以使用 TensorSpace Layer 的 .apply() API 和 网络层融合方法 来连接 Layer,然后配置模型的 inputsoutputs 参数来定义模型的输入层和输出层。TensorSpace 将会根据以上信息,在初始化阶段构建出可视化模型。
举个例子,如果想要构建如下 LeNet 函数模型结构:
图2 - 函数模型图结构
使用以下代码进行构建:
let input = new TSP.layers.GreyscaleInput();

let conv2d_1 =  new TSP.layers.Conv2d();
conv2d_1.apply(input);

let conv2d_2 =  new TSP.layers.Conv2d();
conv2d_2.apply(input);

let add_output = TSP.layers.Add([conv2d_1, conv2d_2]);

let model = new TSP.models.Model(modelContainer, {
  inputs: [input],
  outputs: [add_output]
});

model.load({
  // ..Loader configuration
});

model.init();
TensorSpace 图结构和神经网络图结构对比
TensorSpace 模型和预训练的网络层模型都具有图结构,那么他们有什么关系呢?简答来说,TensorSpace 图结构可以看做是预训练模型图结构的子集。我们可以通过构建 TensorSpace 图结构来完全还原部分还原预训练网络模型的图结构。
完全还原预训练网络图结构
图3 - 完全还原
部分还原预训练网络图结构
Fig. 4 - 部分还原